Cod sursa(job #1050355)

Utilizator kiralalaChitoraga Dumitru kiralala Data 8 decembrie 2013 15:21:14
Problema Loto Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<fstream>
#include<vector>

using namespace std;

FILE* f=freopen("loto.in","r",stdin);
FILE* o=freopen("loto.out","w",stdout);

struct S{int a,b,c;} ;
int n,s;
int v[105];
vector<S> H[5000];
vector<S> sums;
int p=4997;

int main()
{
    scanf("%d%d",&n,&s);

    for(int i=0;i<n;++i)
    {
        scanf("%d",&v[i]);
    }

    for(int i=0;i<n;++i)
        for(int j=0;j<n;++j)
            for(int z=0;z<n;++z)
            {
                int sum=v[i]+v[j]+v[z];
                if(sum>=s) continue;
                S temp;
                temp.a=v[i],temp.b=v[j],temp.c=v[z];
                int key=sum%p;
                H[key].push_back(temp);
                sums.push_back(temp);
            }

    for(int i=0;i<sums.size();++i)
    {
        int sum=sums[i].a+sums[i].b+sums[i].c;
        int key=(s-sum)%p;
        for(int z=0;z<H[key].size();++z)
        {
            if(sum+H[key][z].a+H[key][z].b+H[key][z].c==s)
            {
                printf("%d %d %d %d %d %d",sums[i].a,sums[i].b,sums[i].c,H[key][z].a,H[key][z].b,H[key][z].c);
                fclose(f);
                fclose(o);
                return 0;
            }
        }
    }

    printf("%d",-1);
    fclose(f);
    fclose(o);
    return 0;
}