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

x
+
cmd
5
2
3
5
7
12
5
2
16
64
256
1024
0

Output

x
+
cmd
12
no solution
Advertisements

Demonstration


UVA Online Judge solution - 10125 - Sumsets - UVA Online Judge solution in C,C++,Java

Previous
UVA Online Judge solution - 10104 - Euclid Problem - UVA Online Judge solution in C,C++,Java
Next
UVA Online Judge solution - 10128 - Queue - UVA Online Judge solution in C,C++,Java