Cod sursa(job #1078059)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 11 ianuarie 2014 23:28:08
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
ifstream f ("loto.in");
ofstream g ("loto.out");

struct suma
{
    int sum;
    int x,y,z;
} a[1000001];

int v[101];

int cmp(suma x, suma y)
{
    return (x.sum<y.sum);
}

int main()
{
    int n, i, j,k, mid, st, dr,S, summ,summ1, nr, ok;
    f>>n>>S;

    for (i=1;i<=n;i++)
        f>>v[i];

    nr=0;
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            for (k=1;k<=n;k++)
    {
        nr++;
        summ= v[i]+v[j]+v[k];
        a[nr].sum=summ;
        a[nr].x=v[i];
        a[nr].y=v[j];
        a[nr].z=v[k];
    }

    sort(a+1,a+nr+1,cmp);

    ok=1;
    summ1=0;
    for (i=1;i<=n && ok==1;i++)
        for (j=i;j<=n && ok==1;j++)
            for(k=j;k<=n && ok==1; k++)
    {
        summ1=S-v[i]-v[j]-v[k];
        st=1;
        dr=nr;
        while (st<=dr && ok==1)
        {
            mid=(st+dr)/2;
            if(a[mid].sum>summ1)
                dr=mid+1;
            else
                if(a[mid].sum<summ1)
                 st=mid-1;
            else
                ok=0;
        }
    }
        if(ok==0)
            g<<v[i]<<' '<<v[j]<<' '<<v[k]<<' '<<a[mid].x<<' '<<a[mid].y<<' '<<a[mid].z;
    if(ok)
        g<<-1;
    f.close();g.close();
    return 0;
}