Cod sursa(job #271715)

Utilizator tudalexTudorica Constantin Alexandru tudalex Data 5 martie 2009 20:46:41
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[100], b[1000012][4];
int main()
{
	int n, i, j, k, s, np = 0;
	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);
	scanf("%d %d", &n, &s);

	for (i = 1; i <= n; ++ i)
	{
		scanf("%d", &a[i]);
	}
	sort(a+1, a+n+1);
	for (i = 1; i <= n; ++ i)
		for (j = i; j <= n; ++ j)
			for (k = j; k <= n; ++ k)
			if (a[i]+a[j]+a[k]<=s)
			{
				b[++np][0] = a[i]+a[j]+a[k];
				b[np][1] = a[i];
				b[np][2] = a[j];
				b[np][3] = a[k];
			}
	int left = 1;
	int right = np;
	int sum = b[left][0] + b[right][0];
	while (left <= right)
	{
		if (sum < s)
		{
			sum -= b[left][0];
			++left;
			sum += b[left][0];
		} else
		if (sum > s)
		{
			sum -= b[right][0];
			--right;
			sum += b[right][0];
		} else
		if (sum == s)
		{
			printf("%d %d %d %d %d %d\n",b[left][1], b[left][2], b[left][3], b[right][1], b[right][2], b[right][3]);
			return 0;
		}
	}
	printf("-1\n");
	return 0;
}