Pagini recente » Cod sursa (job #2149025) | Cod sursa (job #2110418) | Cod sursa (job #1265192) | Cod sursa (job #543366) | Cod sursa (job #855223)
Cod sursa(job #855223)
#include <fstream>
#include<stdio.h>
#include <vector>
#define rest 1001000
FILE*g;
using namespace std;
vector <long> hash[rest+3];
long maxim, A[101],n;
void insert (long x)
{
long i,k;
k=x%rest;
if (k>maxim) maxim=k;
for(i=0;i<hash[k].size();i++)
{
if (hash[k][i]==x) return;
}
hash[k].push_back(x);
}
long verif(long x)
{
long i,k;
k=x%rest;
for(i=0;i<hash[k].size();i++)
{
if (hash[k][i]==x) return 1;
}
return 0;
}
long dif(long s)
{
long x,k,i,j;
k=s%rest;
for(i=0;i<=maxim;i++)
{
for(j=0;j<hash[i].size();j++)
{
x=s-hash[i][j];
if(verif(x)) return hash[i][j];
}
}
return -1;
}
void numere(long x)
{
long i,j,k;
int ok=0;
for(i=1;i<=n && ok==0;i++)
for(j=1;j<=n && ok==0;j++)
for(k=1;k<=n && ok==0;k++)
if ((A[i]+A[j]+A[k])==x) {fprintf(g,"%ld %ld %ld ",A[i],A[j],A[k]); ok=1;}
}
int main()
{
FILE*f;
f=fopen("loto.in","r");
g=fopen("loto.out","w");
long i,j,k,s,suma;
fscanf(f,"%ld",&n);
fscanf(f,"%ld",&s);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&A[i]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
insert (A[i]+A[j]+A[k]);
suma=dif(s);
if (suma==-1) fprintf(g,"-1");
else {numere(suma);
numere(s-suma);}
return 0;
}