Cod sursa(job #2774735)

Utilizator Raresr14Rosca Rares Raresr14 Data 12 septembrie 2021 16:49:26
Problema Loto Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <bits/stdc++.h>
#define MOD 1000007
#define X first
#define Y second.first
#define Z second.second.first
#define T second.second.second
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int n,S,i,j,t,sum,v[102],st,dr,mid,k;
vector<pair<int, pair<int ,pair<int,int> > > > H[1000010];
int in(int x){
    int m=x%MOD;
    for(int i=0;i<H[m].size();i++)
        if(H[m][i].X==x)
            return 1;
    return 0;
}
int main(){
    fin>>n>>S;
    for(i=1;i<=n;i++)
        fin>>v[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(t=1;t<=n;t++){
                sum=v[i]+v[t]+v[j];
                if(!in(sum))
                    H[sum%MOD].push_back(make_pair(sum,make_pair(v[i],make_pair(v[j],v[t]))));
            }

    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(t=1;t<=n;t++){
                sum=S-v[i]-v[j]-v[t];
                if(sum<0)
                    continue;
                int m=sum%MOD;
                 for(int p=0;p<H[m].size();p++)
                     if(H[m][p].X==sum){
                        fout<<v[i]<<" "<<v[j]<<" "<<v[t]<<" "<<H[m][p].Y<<" "<<H[m][p].Z<<" "<<H[m][p].T;
                        return 0;
                     }
            }
    fout<<-1;
    return 0;
}