Pagini recente » Cod sursa (job #646841) | Cod sursa (job #1413743) | Cod sursa (job #609864) | Cod sursa (job #1997341) | Cod sursa (job #1764821)
#include <stdio.h>
#define mod 666013
#define lim 105
int v[lim],lista[mod],next[lim*lim*lim],x[lim*lim*lim],y[lim*lim*lim],z[lim*lim*lim],s[lim*lim*lim],m;
int cauta(int val){
int poz=lista[val%mod];
while(poz!=0&&s[poz]!=val)
poz=next[poz];
return poz;
}
void adauga(int a,int b,int c){
if(cauta(v[a]+v[b]+v[c])==0){
m++;
s[m]=v[a]+v[b]+v[c];
x[m]=v[a];
y[m]=v[b];
z[m]=v[c];
next[m]=lista[s[m]%mod];
lista[s[m]%mod]=m;
}
}
int main(){
FILE *fin,*fout;
fin=fopen("loto.in","r");
fout=fopen("loto.out","w");
int i,j,k,n,sum,poz;
fscanf(fin,"%d%d",&n,&sum);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&v[i]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
adauga(i,j,k);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++){
poz=cauta(sum-(v[i]+v[j]+v[k]));
if(poz!=0){
fprintf(fout,"%d %d %d %d %d %d",v[i],v[j],v[k],x[poz],y[poz],z[poz]);
fclose(fin);
fclose(fout);
return 0;
}
}
fprintf(fout,"-1");
fclose(fin);
fclose(fout);
return 0;
}