Cod sursa(job #1536259)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 25 noiembrie 2015 21:34:17
Problema Loto Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.63 kb
#include <fstream>

#include <algorithm>

using namespace std;

int n,i,v[101],j,k,p,s2,x,y,u,m,t,ok,y2;

pair < pair<int,int> , pair <int,int> > s[100001];

ifstream fin ("loto.in");

ofstream fout ("loto.out");

int main (){

    fin>>n>>s2;
    for (i=1;i<=n;i++)
        fin>>v[i];
    k = 0;
    for (i=1;i<=n;i++)
        for (j=i;j<=n;j++)
            for (t=j;t<=n;t++){
                k++;
                s[k].first.first = v[i]+v[j]+v[t];
                s[k].first.second = v[i];
                s[k].second.first = v[j];
                s[k].second.second  = v[t];
            }
    sort (v+1,v+n+1);
    ok = 0;
    for (i=1;i<=k;i++){
        x = s2-s[i].first.first;
        for (j=1;j<=n;j++){
            y2 = x-v[j];
            for (t=j;t<=n;t++){
                y = y2-v[t];
                p = 1;
                u = n;
                while (p<=u){
                    m = (p+u)/2;
                    if (v[m] == y)
                        break;
                    else{
                        if (v[m] < y)
                            p = m+1;
                        else
                            u = m-1;
                    }
                }
                if (p<=u){
                    fout<<s[i].first.second<<" "<<s[i].second.first<<" ";
                    fout<<s[i].second.second<<" "<<v[j]<<" "<<v[t]<<" "<<v[m];
                    ok = 1;
                    break;
                }
            }
            if (ok == 1)
                break;
        }
        if (ok == 1)
            break;
    }
    if (ok == 0)
        fout<<-1;

    return 0;
}