Pagini recente » Cod sursa (job #467008) | Cod sursa (job #600435) | Cod sursa (job #1795469) | Cod sursa (job #647338) | Cod sursa (job #497608)
Cod sursa(job #497608)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE*f=fopen("loto.in","r");
FILE*g=fopen("loto.out","w");
int N,S,i,j,k,poz,pozz,p,u,nr,a[101];
struct suma{
int poz1;
int poz2;
int poz3;
int sum;
} v[1000100];
int cmp(suma a,suma b){
return a.sum < b.sum;
}
int main () {
fscanf(f,"%d %d",&N,&S);
for ( i = 1 ; i <= N ; ++i ){
fscanf(f,"%d",&a[i]);
}
for ( i = 1 ; i <= N ; ++i ){
for ( j = i ; j <= N; ++j ){
for ( k = j ; k <= N ; ++k ){
++nr;
v[nr].poz1 = i;
v[nr].poz2 = j;
v[nr].poz3 = k;
v[nr].sum = a[i] + a[j] + a[k];
}
}
}
sort(v+1,v+nr+1,cmp);
p = 1 ; u = nr;
while ( p <= u ){
int aux = v[p].sum + v[u].sum;
if ( S == aux ){
poz = p;
pozz = u;
break;
}
if ( aux > S ) --u;
else ++p;
}
if ( pozz == 0 ) fprintf(g,"-1\n");
else{
fprintf(g,"%d %d %d ",a[v[poz].poz1],a[v[poz].poz2],a[v[poz].poz3]);
fprintf(g,"%d %d %d ",a[v[pozz].poz1],a[v[pozz].poz2],a[v[pozz].poz3]);
}
fclose(f);
fclose(g);
return 0;
}