Cod sursa(job #153694)

Utilizator CezarMocanCezar Mocan CezarMocan Data 10 martie 2008 18:10:01
Problema Loto Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#include <algorithm>

using namespace std;

struct loto {long x; long p1; long p2; long p3;};

loto x[1000010];
long nrx,i,j,k,n,s,g,sum,aux,poz1,poz2,t,p;
long v[1310];

bool cmp(loto a, loto b)
    {
    if (a.x<b.x)    
        return true;
    else
        return false;
    }
    
int main(){
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&s);
for (i=1;i<=n;i++)
    scanf("%d",&v[i]);
for (i=1;i<=n;i++)
    for (j=1;j<=n;j++)
        for (k=1;k<=n;k++)
            {
            nrx++;
            x[nrx].x=v[i]+v[j]+v[k];
            x[nrx].p1=i;
            x[nrx].p2=j;
            x[nrx].p3=k;   
            }
sort(x+1,x+nrx+1,cmp);
t=nrx;
p=1;
while (p<=t)
    {
    while (x[p].x+x[t].x>s&&t>0)    
        t--;
    if (x[p].x+x[t].x==s)
        {
        printf("%d %d %d %d %d %d \n",v[x[p].p1],v[x[p].p2],v[x[p].p3],v[x[t].p1],v[x[t].p2],v[x[t].p3]);
        return 0;            
        }
    while (x[p].x+x[t].x<s&&p<=nrx)
        p++;
    }
printf("-1\n");
return 0;
}