Cod sursa(job #496304)

Utilizator ChallengeMurtaza Alexandru Challenge Data 28 octombrie 2010 14:16:21
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <algorithm>

using namespace std;

const char InFile[]="loto.in";
const char OutFile[]="loto.out";
const int MaxN=110;
const int SIZE=1000100;

ifstream fin(InFile);
ofstream fout(OutFile);

struct s
{
	int sol1,sol2,sol3,sum;
};

bool cmp_s(s a, s b)
{
	return a.sum<b.sum;
}

int v[MaxN],ind=-1,sum,sol1(-1),sol2,n;
s psol[SIZE];

int main()
{
	fin>>n>>sum;
	for(register int i=0;i<n;++i)
	{
		fin>>v[i];
	}
	fin.close();

	for(register int i1=0;i1<n;++i1)
	{
		for(register int i2=i1;i2<n;++i2)
		{
			for(register int i3=i2;i3<n;++i3)
			{
				++ind;
				psol[ind].sol1=v[i1];
				psol[ind].sol2=v[i2];
				psol[ind].sol3=v[i3];
				psol[ind].sum=psol[ind].sol1+psol[ind].sol2+psol[ind].sol3;
			}
		}
	}

	sort(psol,psol+ind+1,cmp_s);
	int st=0;
	int sf=ind;
	while(st<=sf)
	{
		int x=psol[st].sum+psol[sf].sum;
		if(sum==x)
		{
			sol1=st;
			sol2=sf;
			break;
		}
		else if(sum<x)
		{
			--sf;
		}
		else
		{
			++st;
		}
	}

	if(sol1==-1)
	{
		fout<<"-1";
	}
	else
	{
		fout<<psol[sol1].sol1<<" "<<psol[sol1].sol2<<" "<<psol[sol1].sol3<<" ";
		fout<<psol[sol2].sol1<<" "<<psol[sol2].sol2<<" "<<psol[sol2].sol3;
	}
	fout.close();
	return 0;
}