Cod sursa(job #504724)

Utilizator cat_red20Vasile Ioana cat_red20 Data 28 noiembrie 2010 15:38:40
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *fin,*fout;
int n,s,v[101],i,j,k,p,sc;
struct sum{
	int s;
	int a;
	int b;
	int c;
} w[1000001];

int cmp(sum a, sum b){
if(a.s<b.s){return 1;}
return 0;
}

int cautare(int x){
	int i=1,s=p,m;
	while(i<=s){
		m=(i+s)/2;
		if(w[m].s==x){return m;}
		if(w[m].s<x){i=m+1;}
		else
			s=m-1;
	}
	return 0;
}

int main(){
fin=fopen("loto.in","r");
fout=fopen("loto.out","w");
fscanf(fin,"%d %d",&n,&s);
for(i=1;i<=n;i++){
	fscanf(fin,"%d",&v[i]);
}

for(i=1;i<=n;i++){
	for(j=i;j<=n;j++){
		for(k=j;k<=n;k++){
			p++;
			w[p].s=v[i]+v[j]+v[k];
			w[p].a=v[i];
			w[p].b=v[j];
			w[p].c=v[k];
		}
	}
}
sort(w+1,w+p+1,cmp);

for(i=1;i<=p;i++){
	sc=s-w[i].s;
	k=cautare(sc);
	if(k!=0){
		fprintf(fout,"%d %d %d %d %d %d",w[i].a,w[i].b,w[i].c,w[k].a,w[k].b,w[k].c);
		return 0;
	}
}
fprintf(fout,"-1");
return 0;}