Cod sursa(job #869981)

Utilizator gegeadDragos Gegea gegead Data 2 februarie 2013 17:47:58
Problema Loto Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int v[101],p[1000001];



int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int n,i,j,s,poz,ds,dd,r=0,ok,k;
    scanf("%d%d",&n,&s);
    for(i=1;i<=n;++i)
        scanf("%d",&v[i]);
    for(i=1;i<=n;++i)
        for(j=i;j<=n;++j)
            for(k=j;k<=n;++k)
                p[++p[0]]=v[i]+v[j]+v[k];
    sort(p+1,p+p[0]+1);
    for(i=1;i<=p[0];++i)
    {
        poz=lower_bound(p+i+2,p+p[0]+1,s-p[i])-p-1;
        if(p[poz+1]==s-p[i])
        {
            ds=i;
            dd=poz+1;
            break;
        }
    }
    ok=0;
    for(i=1;i<=n&&ok==0;++i)
        for(j=i;j<=n&&ok==0;++j)
            for(k=j;k<=n;++k)
            {
                r=v[i]+v[j]+v[k];
                if(r==p[ds])
                {
                    ok=1;
                    printf("%d %d %d ",v[i],v[j],v[k]);
                    break;
                }
            }
    ok=0;
    for(i=1;i<=n&&ok==0;++i)
        for(j=i;j<=n&&ok==0;++j)
            for(k=j;k<=n;++k)
            {
                r=v[i]+v[j]+v[k];
                if(r==p[dd])
                {
                    ok=1;
                    printf("%d %d %d ",v[i],v[j],v[k]);
                    break;
                }
            }
    return 0;
}