Pagini recente » Cod sursa (job #2317281) | Cod sursa (job #1148901) | Cod sursa (job #243994) | Cod sursa (job #2044886) | Cod sursa (job #2665699)
#include <stdio.h>
#include <stdlib.h>
#define FUNC 666013 ///Functia va fi %FUNC
int v[100],h[FUNC][101],r[6]; ///Vor fi maxim 1000000 combinatii de 3 diferite, dar sper ca nu o sa fie atat de prost distribuite
int find(long long x){ ///Retuneaza pozitia lui x, sau 0 daca nu exista in vector
int i=x%FUNC,j;
for(j=1;j<=h[i][0];j++)
if(h[i][j]==x)
return j;
return 0;
}
void add(long long x){
int i=x%FUNC;
if(find(x)==0){
h[i][0]++; ///h[i][0], adcia primul element de pe fiecare linie, va avea marimea liniei respective
h[i][h[i][0]]=x;
}
}
int main(){
int n,i,j,k,b, u,max,p;
long long s,a;
FILE *fin, *fout;
fin=fopen("loto.in","r");
fscanf(fin,"%d%d",&n,&s);
for(i=0;i<n;i++){
fscanf(fin,"%d",&v[i]);
}
fclose(fin);
a=-2;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
for(k=j;k<n;k++){
if(find(s-((long long)v[i]+v[j]+v[k]))==0)
add((long long)v[i]+v[j]+v[k]);
//f[v[i]+v[j]+v[k]]++;
else{
a=s-((long long)v[i]+v[j]+v[k]);
r[0]=v[i];
r[1]=v[j];
r[2]=v[k];
}
}
i=0;
while(i<n&&a>-1){
j=i;
while(j<n&&a>-1){
k=j;
while(k<n&&a>-1){
if((long long)v[i]+v[j]+v[k]==a){
a=-1;
r[3]=v[i];
r[4]=v[j];
r[5]=v[k];
}
k++;
}
j++;
}
i++;
}
fout=fopen("loto.out","w");
if(a==-2)
fprintf(fout,"-1\n");
else{
///Sortam cele 6 numere
for(u=5;u>0;u--){
max=r[0];
p=0;
for(i=1;i<=u;i++){
if(r[i]>max){
max=r[i];
p=i;
}
}
r[p]=r[u];
r[u]=max;
}
fprintf(fout,"%d %d %d %d %d %d\n",r[0],r[1],r[2],r[3],r[4],r[5]);
}
fclose(fout);
return 0;
}