Cod sursa(job #821283)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 21 noiembrie 2012 23:18:35
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,S,i,j,k,v[110],sum,w,sol;
struct sp {int a,b,s;};
sp sume[1000010];
int crit(sp x, sp y) {return x.s<y.s;}
int cautbin(int x)
{
    int l=1,r=w,m;
    while(l<=r)
    {
        m=(l+r)/2;
        if(sume[m].s==x) return m;
        if(sume[m].s>x) r=m-1;
        if(sume[m].s<x) l=m+1;
    }
    return -1;
}
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++)
            {
                sum=v[i]+v[j]+v[k];
                w++;
                sume[w].a=v[i];
                sume[w].b=v[j];
                sume[w].s=sum;
            }
    sort(sume+1,sume+w+1,crit);
    /*for(i=1;i<=w;i++)
    {
        sum=S-sume[i].s;
        sol=cautbin(sum);
        if(sol!=-1)
        {
            printf("%d ",sume[i].a);
            printf("%d ",sume[i].b);
            printf("%d ",sume[i].s-sume[i].a-sume[i].b);
            printf("%d ",sume[sol].a);
            printf("%d ",sume[sol].b);
            printf("%d ",sume[sol].s-sume[sol].a-sume[sol].b);
            return 0;
        }
    }*/
    printf("-1\n");
    return 0;
}