Cod sursa(job #1502970)

Utilizator radu_uniculeu sunt radu radu_unicul Data 15 octombrie 2015 12:45:20
Problema Loto Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include<stdio.h>
#include<vector>
#define MOD  100003
using namespace std;
struct chestie
{
    int a;
    int b;
    int c;
    int sum;
};
int n,s,i,j,k,key,it;
chestie val;
int v[101];
long long anwser;
vector<chestie> has[MOD];
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d%d",&n,&s);
    for(i=0; i<n; i++) scanf("%d",&v[i]);
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            for(k=0; k<n; k++)
            {
                val.a=v[i];
                val.b=v[j];
                val.c=v[k];
                val.sum=v[i]+v[j]+v[k];
                if(val.sum>s) continue;
                key=val.sum%MOD;
                has[key].push_back(val);
            }
    printf("\n");
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            for(k=0; k<n; k++)
            {
                val.a=v[i];
                val.b=v[j];
                val.c=v[k];
                val.sum=v[i]+v[j]+v[k];
                if(val.sum>s) continue;
                key=(s-val.sum)%MOD;
                int size=has[key].size();
                for(it=0; it<size; it++) if(has[key][it].sum+val.sum==s)
                    {
                        printf("%d %d %d %d %d %d",has[key][it].a,has[key][it].b,has[key][it].c,val.a,val.b,val.c);
                        return 0;
                    }
            }
    if(anwser!=0) printf("%lld",anwser);
    else printf("-1");
}