Pagini recente » Istoria paginii runda/grigore_moisil_2011/clasament | Cod sursa (job #500910)
Cod sursa(job #500910)
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
FILE*fin,*fout;
long int i,j,k,l,n,a[101],s,p,u;
struct loto {
int s,b1,b2,b3;
}v[1000];
int cmp(loto a,loto b){
if(a.s<b.s){
return 1;}
return 0;
}
int main(){
fin=fopen("loto.in","r");
fout=fopen("loto.out","w");
fscanf(fin,"%ld %ld",&n,&s);
for(i=1;i<=n;i++){
fscanf(fin,"%ld ",&a[i]);
}
int m=0;
for(i=1;i<=n;i++){
for(j=i;j<=n;j++){
for(k=j;k<=n;k++){
m++;v[m].s=a[i]+a[j]+a[k];
v[m].b1=a[i];
v[m].b2=a[j];
v[m].b3=a[k];
}
}
}
sort(v+1,v+m+1,cmp);
for(i=1;i<=m;i++){
p=1;u=m;
while(p<=u){
k=(u+p)/2;
if(v[k].s==s-v[i].s){
fprintf(fout,"%ld %ld %ld %ld %ld %ld",v[i].b1,v[i].b2,v[i].b3,v[k].b1,v[k].b2,v[k].b3);
return 0;
}
else{
if(v[k].s<s-v[i].s){
u=k+1;
}
else{p=k-1;}
}
}
}
fprintf(fout,"-1");
return 0;
}