UVA - 10125 Sumsets
来源:互联网 发布:XP电脑的mac地址怎么查 编辑:程序博客网 时间:2024/05/21 17:05
题目:
Problem C - Sumsets
Given S, a set of integers, find the largest d such that a + b + c = d where a, b, c, and d are distinct elements of S.Input
Several S, each consisting of a line containing an integer 1 <= n <= 1000 indicating the number of elements in S, followed by the elements of S, one per line. Each element of S is a distinct integer between -536870912 and +536870911 inclusive. The last line of input contains 0.Output
For each S, a single line containing d, or a single line containing "no solution".Sample Input
52 3 5 7 1252 16 64 256 10240
Output for Sample Input
12no solution
#include <cstdlib> #include <cstdio> #include <cstring> #include <string> #include <algorithm> using namespace std; const int MAXN = 10000003; const int MAXSIZE = 1030; int n; int rear; struct node { int i, j; }st[MAXSIZE*MAXSIZE]; int first[MAXN], next[MAXSIZE*MAXSIZE]; int A[MAXSIZE]; int sum[MAXSIZE*MAXSIZE]; void init() { rear = 0; memset(first, -1, sizeof(first)); } int hash(int s) { int h = s & 0x7fffffff; return h % MAXN; } void insert(int s) { int h = hash(sum[s]); next[s] = first[h]; first[h] = s; } int find(int i, int j, int s) { int h = hash(s); for(int v = first[h]; v != -1; v = next[v]) { if(s == sum[v] && st[v].i != i && st[v].i != j && st[v].j != i && st[v].j != j) return 1; } return 0; } void read_case() { init(); for(int i = 0; i < n; i++) scanf("%d", &A[i]); sort(A, A+n); for(int i = 0; i < n; i++) { for(int j = i+1; j < n; j++) { st[rear].i = i, st[rear].j = j; sum[rear] = A[i]+A[j]; insert(rear); rear++; } } } void solve() { read_case(); for(int i = n-1; i >= 0; i--) { for(int j = 0; j < n; j++) if(i != j) { if(find(i, j, A[i]-A[j])) { printf("%d\n", A[i]); return ; } } } printf("no solution\n"); } int main() { while(scanf("%d", &n) && n) { solve(); } return 0; }
0 0
- UVa 10125 - Sumsets
- uva 10125 - Sumsets
- uva 10125 Sumsets
- UVa 10125 - Sumsets
- uva 10125 - Sumsets
- UVA 10125 Sumsets
- UVA 10125 - Sumsets
- UVa 10125-Sumsets
- UVa:10125 Sumsets
- uva 10125 Sumsets
- UVA 10125 Sumsets
- UVa 10125 - Sumsets
- UVA 10125 - Sumsets
- UVA - 10125 Sumsets
- UVA - 10125 Sumsets
- uva 10125 - Sumsets
- UVA 10125(p89)----Sumsets
- UVA 10125 Sumsets .
- IOS应用之间跳转
- 夭折的会员开通系统
- footer位于最下方(作业)
- (二)线程同步_5---使用read/write锁同步数据
- UVA 11324 The Largest Clique (强联通+DP)
- UVA - 10125 Sumsets
- 添加Maven私服
- MTK 65XX系列通过USB OTG添加Ethernet RJ45有线网卡支持
- hdu 1312 Red and Black
- Subsets
- Java基础之IO流知识点总结一
- 关于静音的设置与恢复 AndroidAudioManager.setStreamMute
- iOS开源库PKRevealController的使用
- Debugging Chromium on Android