Cod sursa(job #1775979)

Utilizator tanasaradutanasaradu tanasaradu Data 10 octombrie 2016 20:52:50
Problema Loto Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>
#define p 1000003
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int a[105],n,S;
vector<int>h[p];
void Citire()
{
    int i;
    fin>>n>>S;
    for(i=1;i<=n;i++)
        fin>>a[i];
}
void Adauga(int x)
{
    int r;
    r=x%p;
    h[r].push_back(x);
}
int Gasire(int x)
{
    int r,k,i;
    r=x%p;
    k=h[r].size();
    for(i=0;i<k;i++)
        if(h[r][i]==x)
        return 1;
    return 0;
}
void Rezolvare()
{
    int i,s,j,k,ii,jj,kk;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
    {
        s=a[i]+a[j]+a[k];
        Adauga(s);
        if(Gasire(S-s)==1)
        {
            fout<<a[i]<<" "<<a[j]<<" "<<a[k]<<" ";

            s=S-s;
            for(ii=1;ii<=n;ii++)
                for(jj=1;jj<=n;jj++)
                  for(kk=1;kk<=n;kk++)
                    if(a[ii]+a[jj]+a[kk]==s)
                  {
                      fout<<a[ii]<<" "<<a[jj]<<" "<<a[kk]<<"\n";
                      return;
                  }
        }
    }
    fout<<"-1"<<"\n";
}
int main()
{
    Citire();
    Rezolvare();
    return 0;
}