Cod sursa(job #496784)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 30 octombrie 2010 17:36:29
Problema Loto Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

FILE*f=fopen("loto.in","r");
FILE*g=fopen("loto.out","w");

int N,S,i,j,k,pozz,pozzz,p,u,nrs,A[101];

struct suma_3{
	int poz1;
	int poz2;
	int poz3;
	int sum;
} W[1000100];

int cmp(suma_3 a,suma_3 b){
	return a.sum < b.sum;
}

void cautbin () {
	p = 1 ; u = nrs;
	while ( p <= u ){
		int aux = W[p].sum + W[u].sum;
		
		if ( S == aux ){
			pozz = p;
			pozzz = u;
			break;
		}
		if ( aux > S ) --u;
		else ++p;
		
	}
}

void vector() {
	for ( i = 1 ; i <= N ; ++i ){
		for ( j = 1 ; j <= N; ++j ){
			for ( k = 1 ; k <= N ; ++k ){
				++nrs;
				W[nrs].poz1 = i;
				W[nrs].poz2 = j;
				W[nrs].poz3 = k;
				W[nrs].sum = A[i] + A[j] + A[k];
			}
		}
	}
}

int main () {
	
	fscanf(f,"%d %d",&N,&S);
	
	for ( i = 1 ; i <= N ; ++i )
		fscanf(f,"%d",&A[i]);
	
	vector();
	sort(W+1,W+nrs+1,cmp);
	cautbin();
	
	if ( pozz == 0 ) fprintf(g,"-1\n");
	else{
		fprintf(g,"%d %d %d ",A[W[pozz].poz1],A[W[pozz].poz2],A[W[pozz].poz3]);
		fprintf(g,"%d %d %d ",A[W[pozzz].poz1],A[W[pozzz].poz2],A[W[pozzz].poz3]);
	}
	
	
	fclose(f);
	fclose(g);
	
	return 0;
}