Nu aveti permisiuni pentru a descarca fisierul grader_test16.in

Cod sursa(job #2006044)

Utilizator SCatalinStanciu Catalin SCatalin Data 28 iulie 2017 17:34:14
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>

using namespace std;

ifstream in("loto.in");
ofstream out("loto.out");
const int NMAX = 1000005;

int v[105],n;
int S[NMAX];
bool gasit(int x)
{
    int lo=1, hi=n, mid;
    while (lo<=hi)
    {
        mid = lo+(hi-lo)/2;
        if (S[mid] == x)
            return 1;
        if (S[mid]<x)
            lo = mid+1;
        else
            hi = mid-1;
    }
    mid = lo+(hi-lo)/2;
    if (S[mid] > x)
        mid--;
    if (S[mid] == x)
        return 1;
    return 0;
}

int main()
{
    int n,s,i,j,k,i2,j2,k2,z=0;
    in >> n >> s;
    for (i = 0; i<n; i++)
        in >> v[i];
    for (i = 0; i<n; i++)
        for (j = i; j<n; j++)
            for (k = j; k<n; k++)
                S[z++] = v[i]+v[j]+v[k];
    for (i = 0; i<n; i++)
        for (j = i; j<n; j++)
            for (k = j; k<n; k++){
                int dif = s-v[i]-v[j]-v[k];
                if (gasit(dif))
                {
                    out << v[i] << " " << v[j] << " " << v[k] << " ";
                    for (i2 = 0; i2<n; i2++)
                        for (j2 = i2; j2<n; j2++)
                            for (k2 = j2; k2<n; k2++)
                                if (v[i2]+v[j2]+v[k2] == dif){
                                    out << v[i2] << " " << v[j2] << " " << v[k2];
                                    return 0;}
                }
            }
}