Cod sursa(job #1689459)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 14 aprilie 2016 11:47:23
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <fstream>
#include <algorithm>

using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
long long sum,n,v[1005],i,j,h,st,dr,mid,ok,k;
pair< pair<long long , long long> , pair<long long , long long> > s[1005];

int main ()
{
    fin>>n>>sum;
    for(i=1;i<=n;i++)
        fin>>v[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(h=1;h<=n;h++)
            {
                s[++k].first.first=v[i]+v[j]+v[h];
                s[k].first.second=i;
                s[k].second.first=j;
                s[k].second.second=h;
            }
    sort(s+1, s+1+k);
    for(i=1;i<=k;i++)
    {
        st=1;
        dr=k;
        while(st<=dr)
        {
            mid=(st+dr)/2;
            if(s[mid].first.first+s[i].first.first==sum)
            {
                fout<<s[i].first.second<<" ";
                fout<<s[i].second.first<<" ";
                fout<<s[i].second.second<<" ";
                fout<<s[mid].first.second<<" ";
                fout<<s[mid].second.first<<" ";
                fout<<s[mid].second.second;
                ok=1;
                break;
            }
            else
                if(s[mid].first.first+s[i].first.first>sum)
                    dr=mid-1;
                else
                    st=mid+1;
        }
        if(ok==1)
            break;
    }
    if(ok==0)
        fout<<-1;
    fin.close();
    fout.close();
    return 0;
}