Cod sursa(job #1560246)

Utilizator narcis_vsGemene Narcis - Gabriel narcis_vs Data 2 ianuarie 2016 12:12:59
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
const int maxx1=105,maxx2=1000007;
int n,s,i,j,k,nr,spart,val,x[maxx1],ans[7],pos[maxx2][3];
vector <int> hash[1000004];
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d %d\n",&n,&s);
    for(i=1;i<=n;i++)
        scanf("%d",&x[i]);
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
            for(k=j;k<=n;k++)
            {
                pos[++nr][0]=x[i];
                pos[nr][1]=x[j];
                pos[nr][2]=x[k];
                hash[(x[i]+x[j]+x[k])%1000003].push_back(nr);
            }
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
            {
                spart=x[i]+x[j]+x[k];
                if(s>spart)
                {
                    val=(s-spart)%1000003;
                    if(hash[val].size())
                        if(pos[hash[val][0]][0]+pos[hash[val][0]][1]+pos[hash[val][0]][2]==s-spart)
                        {
                            ans[1]=x[i];
                            ans[2]=x[j];
                            ans[3]=x[k];
                            ans[4]=pos[hash[val][0]][0];
                            ans[5]=pos[hash[val][0]][1];
                            ans[6]=pos[hash[val][0]][2];
                        }
                }
            }
    sort(ans+1,ans+7);
    if(ans[1]==0)
        printf("-1\n");
    else
   {
        for(i=1;i<=6;i++)
            printf("%d ",ans[i]);
        printf("\n");
    }
    return 0;
}