Cod sursa(job #1040852)

Utilizator vlad233Dragan Vlad vlad233 Data 25 noiembrie 2013 00:25:49
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <iostream>
#include <fstream>

using namespace std;

unsigned long b[101];

void merge(int st, int x, int dr)
{
    int i,j,nr=0,a[500001];
	i=st;
	j=x+1;
	while (i<=x && j<=dr)
	{
		if (b[i]<b[j])
		{
			a[++nr]=b[i];
			i++;
		}
		else
		{
			a[++nr]=b[j];
			j++;
		}
	}
	while (i<=x)
	{
		a[++nr]=b[i];
		i++;
	}
	while (j<=dr)
	{
		a[++nr]=b[j];
		j++;
	}
	nr=0;
	for (i=st;i<=dr;i++)
		b[i]=a[++nr];
}

void mergesort(int s, int d)
{
	int x;
	if ((d-s)<1)
		return;
	else
	{
		x=(s+d)/2;
		mergesort(s,x);
		mergesort(x+1,d);
		merge(s,x,d);
	}
}

int main()
{
	int n,i,j=0,ok=0;
	long long x,s;
	ifstream f("input.txt");
	f>>n>>s;	
	for (i=1;i<=n;i++)
	{
		f>>x;
		if (x<=s)
			b[++j]=x;
	}
	f.close();
	mergesort(1,j);
	ofstream g("output.txt");
	for (int i1=1;i1<=j && ok==0;i1++)
		for (int i2=1;i2<=j && b[i1]+b[i2]<=s && ok==0;i2++)
			for (int i3=1;i3<=j && b[i1]+b[i2]+b[i3]<=s && ok==0;i3++)
				for (int i4=1;i4<=j && b[i1]+b[i2]+b[i3]+b[i4]<=s && ok==0;i4++)
					for (int i5=1;i5<=j && b[i1]+b[i2]+b[i3]+b[i4]+b[i5]<=s && ok==0;i5++)
						for (int i6=1;i6<=j && b[i1]+b[i2]+b[i3]+b[i4]+b[i5]+b[i6]<=s && ok==0;i6++)
							if (b[i1]+b[i2]+b[i3]+b[i4]+b[i5]+b[i6]==s)
							{
								g<<b[i1]<<" "<<b[i2]<<" "<<b[i3]<<" "<<b[i4]<<" "<<b[i5]<<" "<<b[i6];
								ok=1;
							}
	if (ok==0)
		g<<-1;
	g.close();
	return 0;
}