Algorithm
problem Link : https://onlinejudge.org/index.php?option=onlinejudge&Itemid=8&page=show_problem&problem=1066
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 5 2 3 5 7 12 5 2 16 64 256 1024 0
Sample Output 12 no solution
Code Examples
#1 Code Example with C Programming
Code -
C Programming
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,v;
while(cin >> n, n){
bool found = false;
set < long long> nums;
for(int i=0;i < n;i++){
cin >> v;
nums.insert(v);
}
for(auto d=nums.rbegin();d!=nums.rend() && !found;d++)
for(auto b=nums.rbegin();b!=nums.rend() && !found;b++)
for(auto c=next(b);c!=nums.rend() && !found;c++){
int a = *d-*b-*c;
if(d == b || d == c) continue;
if(a == *d || a == *b || a == *c) continue;
if(nums.count(a)) {
cout << *d << endl;
found = true;
}
}
if(!found) cout << "no solution" << endl;
}
}
Copy The Code &
Try With Live Editor
Input
2
3
5
7
12
5
2
16
64
256
1024
0
Output
no solution
Demonstration
UVA Online Judge solution - 10125 - Sumsets - UVA Online Judge solution in C,C++,Java