Cod sursa(job #3184546)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 16 decembrie 2023 10:48:02
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("loto.in");
ofstream G("loto.out");
struct S {
    int t,x,y,z;
};
int n,i,j,k,s,v[101],e,q;
S r[1000001];
int C(S a,S b)
{
    return a.t<b.t;
}
int main()
{
	for(F>>n>>s,i=1;i<=n;++i)
     	F>>v[i];
	for(i=1;i<=n;++i)
        for(j=i;j<=n;++j)
            for(k=j;k<=n;++k)
                r[++e].t=v[i]+v[j]+v[k],r[e].x=v[i],r[e].y=v[j],r[e].z=v[k];
	for(sort(r+1,r+e+1,C),q=1;q<e;q<<=1);
	for(i=1;i<=e;++i) {
     	if(s<=r[i].t)
           	break;
     	for(j=0,k=q;k;k>>=1)
            if(k+j<=e) {
                if(r[j+k].t<s-r[i].t)
                    j+=k;
                else if(r[j+k].t==s-r[i].t) {
                    G<<r[i].x<<" "<<r[i].y<<" "<<r[i].z<<" "<<r[j+k].x<<" "<<r[j+k].y<<" "<<r[j+k].z;
                    return 0;
                }
            }
	}
	G<<-1;
    return 0;
}