Cod sursa(job #2325833)

Utilizator shantih1Alex S Hill shantih1 Data 22 ianuarie 2019 22:53:23
Problema Loto Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");

int n,s,i,j,l,nr,st,dr,m,nd,md=666013;
int v[105];
struct per
{	int s,t1,t2,t3;
	bool operator<(const per &alt)const
	{	return s<alt.s;		}
} z,d[1000005];
vector<per> H[666113];

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(l=j;l<=n;l++)
				nr=v[i]+v[j]+v[l], H[nr%md].push_back({nr, v[i], v[j], v[l]});
	
	for(i=1;i<md;i++)
		for(auto j:H[i])
			if(d[nd].s!=j.s)	d[++nd]=j;
	sort(d+1,d+nd+1);
	
	for(i=1;i<=n;i++)
		for(j=i;j<=n;j++)
			for(l=j;l<=n;l++)
			{
				nr=s-(v[i]+v[j]+v[l]);
				
				int st,p;
				for(st=1;st<nd;st<<=1);
				for(p=0;st;st>>=1)
					if(p+st<=n && d[p+st].s<=nr)
						p+=st;
				
				if(d[p].s==nr)
				{
					fout<<v[i]<<" "<<v[j]<<" "<<v[l]<<" "<<d[p].t1<<" "<<d[p].t2<<" "<<d[p].t3<<"\n";
					return 0;
				}
			}
	fout<<-1<<"\n";
}