Cod sursa(job #2417465)

Utilizator etienAndrone Stefan etien Data 29 aprilie 2019 21:45:21
Problema Loto Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
ofstream rout("loto.txt");
int n,i,v[101],s,nrsu,j,k,st,dr,mi,poz,ok;
struct loto
{
    int nr,i1,i2,i3;
};
bool compare(loto a,loto b)
{
    return a.nr<b.nr;
}
loto su[1000001];
int main()
{
    fin>>n>>s;
    for(i=1;i<=n;i++)
        fin>>v[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
            {
                su[++nrsu].nr=v[i]+v[j]+v[k];
                su[nrsu].i1=i;
                su[nrsu].i2=j;
                su[nrsu].i3=k;
            }
    sort(su+1,su+nrsu+1,compare);
    for(i=1;i<=nrsu;i++)
    {
        st=1;
        dr=nrsu;
        while(st<=dr)
        {
            mi=(st+dr)/2;
            if(su[mi].nr+su[i].nr>s)
                dr=mi-1;
            else if(su[mi].nr+su[i].nr<s)
                st=mi+1;
            else
            {
                ok=1;
                break;
            }
        }
        if(ok)
        {
            fout<<v[su[i].i1]<<" "<<v[su[i].i2]<<" "<<v[su[i].i3]<<" "<<v[su[mi].i1]<<" "<<v[su[mi].i2]<<" "<<v[su[mi].i3];
            break;
        }
    }
    if(!ok)
        fout<<"-1";
}