Cod sursa(job #1774120)

Utilizator blackmanta45Andrei blackmanta45 Data 8 octombrie 2016 16:27:20
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <algorithm>
#define s first
#define x second.first
#define y second.second.first
#define z second.second.second
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
pair <int, pair<int, pair <int,int> > > r[4000010];
int v[110],st,dr,mid,n,S,i,j,k,p;
int main () {
    fin>>n>>S;
    for(i=1;i<=n;i++)
        fin>>v[i];
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
            for(k=j;k<=n;k++){
                r[++p].s=v[i]+v[j]+v[k];
                r[p].x=v[i];
                r[p].y=v[j];
                r[p].z=v[k];
            }
    sort(r+1,r+p+1);
    for(i=1;i<=p;i++){
        st=r[i].s;
        dr=r[p].s;
        while(st<=dr){
            mid=(st+dr)/2;
            if(r[i].s+r[mid].s==S){
                fout<<r[i].x<<" "<<r[i].y<<" "<<r[i].z<<" "<<r[mid].x<<" "<<r[mid].y<<" "<<r[mid].z;
                return 0;
            }
            else
                if(r[mid].s>S)
                    dr=mid-1;
                else
                    st=mid+1;
        }

    }
    fout<<-1;
}