Cod sursa(job #1514391)

Utilizator DavidDragulinDragulin David DavidDragulin Data 31 octombrie 2015 09:52:39
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *fin=fopen("loto.in","r");
FILE *fout=fopen("loto.out","w");
struct loto
{
    int x,y,z,suma;
}v[1000004];
int compare(loto x,loto y)
{
    return x.suma<y.suma;
}
int i,j,k,p,n,s,a[102],b[1000002],nr,ind,sol[8];
int main()
{
    fscanf(fin,"%d%d",&n,&s);
    for(i=1;i<=n;i++)fscanf(fin,"%d",&a[i]);
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
            for(p=j;p<=n;p++)
            {
                k++;
                v[k].suma=a[i]+a[j]+a[p];
                v[k].x=a[i];
                v[k].y=a[j];
                v[k].z=a[p];
            }
    sort(v+1,v+k+1,compare);
    for(i=1;i<=k;i++)b[i]=v[i].suma;
    for(i=1;i<=k;i++)
    {
        nr=v[i].suma;
        nr=s-nr;
        ind=upper_bound(b+1,b+k+1,nr)-b;
        ind--;
        if(v[ind].suma==nr)
        {
            sol[1]=v[i].x;
            sol[2]=v[i].y;
            sol[3]=v[i].z;
            sol[4]=v[ind].x;
            sol[5]=v[ind].y;
            sol[6]=v[ind].z;
            sort(sol+1,sol+7);
            for(j=1;j<=6;j++)fprintf(fout,"%d ",sol[j]);
            return 0;
        }
    }
    fprintf(fout,"-1");
    return 0;
}