POJ 2549
2014-04-02 21:57
99 查看
Sumsets
Description
View Code
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 8235 | Accepted: 2260 |
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct node { int v,a,b; }; const int MAX = 1005; int N,len = 0; int ele[MAX]; node y[MAX * MAX]; bool cmp(node a,node b) { return a.v < b.v; } bool solve() { for(int i = N - 1; i >= 0; --i) { for(int j = N - 1; j >= 0; --j) { if(i == j) continue; int d = ele[i] - ele[j]; // printf("ele = %d d = %d\n",ele[i],d); int l = 0,r = len - 1; while(l < r) { int mid = (l + r + 1) >> 1; if(y[mid].v > d) r = mid - 1; else l = mid; } if(y[l].v == d) { for(int k = l; k < len; ++k) { if(y[k].v == d && y[k].a != ele[j] && y[k].b != ele[j] && y[k].a != ele[i] && y[k].b != ele[i]) { printf("%d\n",ele[i]); return true; } } for(int k = l; k >= 0; --k) { if(y[k].v == d && y[k].a != ele[j] && y[k].b != ele[j] && y[k].a != ele[i] && y[k].b != ele[i]) { printf("%d\n",ele[i]); return true; } } } } } return false; } int main() { // freopen("sw.in","r",stdin); while(~scanf("%d",&N) && N ) { for(int i = 0; i < N; ++i) scanf("%d",&ele[i]); sort(ele,ele + N); N = unique(ele,ele + N) - ele; len = 0; for(int i = 0; i < N; ++i) { for(int j = i + 1; j < N; ++j) { y[len].v = ele[i] + ele[j]; y[len].a = ele[i]; y[len++].b = ele[j]; } } sort(y,y + len,cmp); if(!solve()) printf("no solution\n"); } return 0; }
View Code
相关文章推荐
- poj 2549 Sumsets
- POJ - 2549 Sumsets
- UVA 10125 - Sumsets(POJ 2549) hash
- UVa 10125 & POJ 2549 - Sumsets
- POJ 2549:Sumsets
- poj 2549 3SUM直接枚举
- UVA 10125 - Sumsets(POJ 2549) hash
- poj 2549 Sumsets (折半枚举)
- poj 2549
- [poj] 2549 Sumsets || 双向bfs
- poj 2549 Sumsets 【二分&&模拟】
- POJ 2549 Sumsets hash
- poj 2549 Sumsets
- poj 2549 3SUM
- poj 2549 Sumsets
- poj 2549(二分)
- Poj 2549 Sumsets【巧妙枚举】
- POJ 2549 Sumsets
- poj 2549 折半枚举+二分
- poj 2549 Sumsets (枚举+二分)