Cod sursa(job #1057853)

Utilizator rucarRucareanu Alexandru rucar Data 14 decembrie 2013 19:49:30
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <unordered_set>


struct suma{
	int val, i, j, k;
};
suma sume[200000];

int main()
{
	int n, i, s, j, k, nr = 0, sp;
	FILE*f = fopen("loto.in", "r"), *g = fopen("loto.out", "w");
	fscanf(f, "%d%d", &n, &s);
	int *v = (int*)malloc(sizeof(int)*n);
	for (i = 0; i < n; i++)
		fscanf(f, "%d", &v[i]);
	for (i = 0; i < n; i++)
	{
		for (j = i; j < n; j++)
		{
			for (k = j; k < n; k++)
			{
				sume[nr].i = v[i]; sume[nr].j = v[j]; sume[nr].k = v[k];
				sume[nr].val = v[i] + v[j] + v[k];
				nr++;
			}
		}
	}
	std::unordered_set<int> hash;
	for (i = 0; i < nr; i++)
		hash.insert(sume[i].val);
	std::unordered_set<int>::const_iterator verf;
	k = 0;
	int *sor = (int*)malloc(sizeof(int)* 6);
	for (i = 0; i < nr; i++)
	{
		sp = s - sume[i].val;
		verf = hash.find(sp);
		if (verf != hash.end())
		{
			for (j = 0; j < nr; j++)
			{
				if (sume[j].val == sp)
				{
					sor[0] = sume[i].i; sor[1] = sume[i].j; sor[2] = sume[i].k;
					sor[3] = sume[j].i; sor[4] = sume[j].j; sor[5] = sume[j].k;
					for (i = 0; i < 5; i++)
					{
						for (j = i + 1; j < 6; j++)
						{
							if (sor[i]>sor[j])
							{
								int aux = sor[i];
								sor[i] = sor[j];
								sor[j] = aux;
							}
						}
					}
					for (i = 0; i < 6;i++)
					fprintf(g, "%d ", sor[i]);
					k = 1;
					break;
				}
			}
			break;
		}
	}
	if (k == 0)
		fprintf(g, "%d", -1);
	fclose(f); fclose(g);
	return 0;
}