Cod sursa(job #2778793)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 2 octombrie 2021 10:56:46
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("loto.in");
ofstream G("loto.out");
struct S {
    int x,y,z,t;
};
int n,i,j,k,m,s,v[101],e,o,a,b,p,l,q,u[7];
S r[1000001];
int C(S a,S b)
{
    return a.t<b.t;
}
int main()
{
	F>>n>>s;
	for(i=1;i<=n;++i)
     	F>>v[i];
	p=s,sort(v+1,v+n+1);
	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];
	sort(r+1,r+e+1,C);
	for(q=1;q<e;q<<=1);
	for(i=1;i<=e&&!o;++i) {
     	if(p<=r[i].t)
           	break;
     	for(j=0,m=q;m&&!o;m>>=1)
            if(m+j<=e) {
                if(r[j+m].t<p-r[i].t)
                    j+=m;
                else if(r[j+m].t==p-r[i].t)
                    o=1,l=i,k=j+m;
            }
	}
	if(!o)
     	G<<-1;
	else
		u[1]=r[l].x,u[2]=r[l].y,u[3]=r[l].z,u[4]=r[k].x,u[5]=r[k].y,u[6]=r[k].z,sort(u+1,u+7),G<<u[1]<<" "<<u[2]<<" "<<u[3]<<" "<<u[4]<<" "<<u[5]<<" "<<u[6];
    return 0;
}