Cod sursa(job #2438708)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 13 iulie 2019 15:14:33
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int n,s,a[110];
bool ok;
vector<pair<int,pair<int,pair<int,int>>>> v[10000];
const int mod=9973;
void add(int n,int i,int j,int k)
{
    int r=n%mod;
    v[r].push_back({n,{i,{j,k}}});
}
void Find(int n,int i,int j,int k,bool &ok)
{
    int r=n%mod;
    int sz=v[r].size();
    for(int it=0;it<sz;it++)
        if(n==v[r][it].first)
        {
            ok=1;
            out<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<v[r][it].second.first<<" "<<v[r][it].second.second.first<<" "<<v[r][it].second.second.second;
            return;
        }
}
int main()
{
     in>>n>>s;
     for(int i=1;i<=n;i++) in>>a[i];
     for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
         for(int k=1;k<=n;k++)
           add(a[i]+a[j]+a[k],i,j,k);
     for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
          for(int k=1;k<=n;k++)
          {
             ok=0;
             if(s-a[i]-a[j]-a[k]>=0) Find(s-a[i]-a[j]-a[k],i,j,k,ok);
             if(ok) return 0;
          }
     out<<-1;
}