Cod sursa(job #1415399)

Utilizator WhiteStormPopovici Stefan WhiteStorm Data 4 aprilie 2015 15:23:26
Problema Loto Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct vts
{
    int c1,c2,c3,ss;
};
vts suma[1000001];
bool cmp(vts x,vts y)
{
    return x.ss<y.ss;
}
int main()
{
    int n,S,i,j,l,li,nrsume,ls,mij,aj=1,s;
    in>>n>>S;
    nrsume=n*n*n;
    int v[n+1];
    for(i=1;i<=n;i++) in>>v[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(l=1;l<=n;l++)
            {
                suma[aj].c1=v[i];
                suma[aj].c2=v[j];
                suma[aj].c3=v[l];
                suma[aj].ss=v[i]+v[j]+v[l];
                aj++;
            }
    sort(suma+1,suma+nrsume+1,cmp);
    //for(i=1;i<=nrsume;i++) out<<suma[i]<<" ";
    for(i=1;i<=nrsume;i++)
    {
        s=S-suma[i].ss;
        li=1;
        ls=nrsume;
        while(li<=ls)
        {
            mij=(li+ls)/2;
            if(s<suma[mij].ss) ls=mij-1;
            else if(s>suma[mij].ss) li=mij+1;
            else
            {
                out<<suma[i].c1<<" "<<suma[i].c2<<" "<<suma[i].c3<<" "<<suma[mij].c1<<" "<<suma[mij].c2<<" "<<suma[mij].c3;
                return 0;
            }
        }
    }
    out << "-1";
    return 0;
}