Pagini recente » Clasament b | Cod sursa (job #1015522) | Cod sursa (job #2967773) | Cod sursa (job #881973) | Cod sursa (job #815019)
Cod sursa(job #815019)
#include <cstdlib>
#include <cstdio>
#include <vector>
#define M 666013
using namespace std;
struct sumede3
{
int suma,t1,t2,t3;
};
int v[101],S;
vector<sumede3> hash[M];
int main()
{
FILE *fin,*fout;
fin = fopen("loto.in","r");
fout = fopen("loto.out","w");
int n;
fscanf(fin,"%d %d ",&n,&S);
for ( int i = 1; i <= n ; i++)
fscanf(fin,"%d",&v[i]);
for ( int i = 1 ; i <= n ; i++ )
for ( int j = i ; j <= n ; j++ )
for (int k = j ; k <= n ; k++)
{
int r,s = v[i] + v[j] + v[k];
if (s >= S) continue;
r = s%M;
sumede3 x;
x.suma = s;
x.t1 = i;
x.t2 = j;
x.t3 = k;
hash[r].push_back(x);
}
int ok = 0;
for ( int i = 1; i <= n ; i++ )
for ( int j = i; j <= n; j++ )
for ( int k = j ; k <= n ; k++ )
{
int scaut,r,s = v[i] + v[j] + v[k];
scaut = S - s;
if ( scaut <= 0 ) continue;
r = scaut%M;
for (size_t it = 0; it < hash[r].size() ; it++)
if ( scaut == hash[r][it].suma )
{
fprintf(fout,"%d %d %d ",v[i],v[j],v[k]);
fprintf(fout,"%d %d %d\n",hash[r][it].t1,hash[r][it].t2,hash[r][it].t3);
ok = 1; goto here;
}
}
here:
if ( !ok ) fprintf(fout,"-1");
return 0;
}