Cod sursa(job #179655)
Utilizator | Data | 16 aprilie 2008 10:51:20 | |
---|---|---|---|
Problema | Loto | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.02 kb |
#include <stdio.h>
#include <algorithm>
using namespace std;
long n,s,b[128],ss,sss;
long (*a)[4]=new long[524288][4];
int main(void)
{
long i,j,k,l,x,y;
FILE *f;
f=fopen("loto.in","rt");
fscanf(f,"%ld %ld",&n,&s);
for(i=0;i<n;i++)
fscanf(f,"%ld",&b[i]);
sort(b,b+n);
l=0;
fclose(f);
f=fopen("loto.out","wt");
for(i=0;i<n;i++){
for(j=i;(j<n)&&(b[i]<=s);j++){
ss=b[j]+b[i];
for(k=j,sss=ss+b[k];(k<n)&&(sss<=s);k++,sss=ss+b[k])
{
a[l][0]=sss;
a[l][1]=i;
a[l][2]=j;
a[l][3]=k;
l++;
// printf("%ld ",a[l-1][0]);
}}}
k=1;
for(i=0;(i<l)&&k;i++)
{
ss=s-a[i][0];
for(j=i;(j<l)&&k&&(a[j][0]<=ss);j++)
if(ss==a[j][0])
{
x=i;
y=j;
k=0;
break;
}
}
// printf("a %ld %ld %ld",k,x,y);
// scanf("%ld",&n);
// i--;j--;
if(k)
{
fprintf(f,"-1");
fclose(f);
return 0;
}
fprintf(f,"%ld %ld %ld %ld %ld %ld ",b[a[x][1]],b[a[x][2]],b[a[x][3]],b[a[y][1]],b[a[y][2]],b[a[y][3]]);
fclose(f);
return 0;
}