Cod sursa(job #1050350)

Utilizator kiralalaChitoraga Dumitru kiralala Data 8 decembrie 2013 15:17:22
Problema Loto Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 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[100][100];
vector<S> sums;
int p1=97,p2=98;

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 key1=sum%p1;
                int key2=sum%p2;
                H[key1][key2].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 key1=(s-sum)%p1;
        int key2=(s-sum)%p2;
        for(int z=0;z<H[key1][key2].size();++z)
        {
            if(sum+H[key1][key2][z].a+H[key1][key2][z].b+H[key1][key2][z].c==s)
            {
                printf("%d %d %d %d %d %d",sums[i].a,sums[i].b,sums[i].c,H[key1][key2][z].a,H[key1][key2][z].b,H[key1][key2][z].c);
                fclose(f);
                fclose(o);
                return 0;
            }
        }
    }

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