Mai intai trebuie sa te autentifici.
Cod sursa(job #291218)
Utilizator | Data | 29 martie 2009 15:57:14 | |
---|---|---|---|
Problema | Loto | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.34 kb |
#include<algorithm>
using namespace std;
#define DIM 101
int n,m,s,v[DIM];
struct trip{
int x,y,z,sum;};
trip a[DIM*DIM*DIM];
/*void sort(){
int i,j;
trip aux;
for(i=1; i<m; ++i)
for(j=i+1; j<=m; ++j)
if(a[i].sum>a[j].sum){
aux=a[i];
a[i]=a[j];
a[j]=aux;}}*/
int cmp(trip a,trip b){
return a.sum<b.sum;}
int cbin(int val){
int st,dr,mij;
for(st=1,dr=m; st<=dr; ){
mij=(st+dr)/2;
if(a[mij].sum<val)
st=mij+1;
else if(a[mij].sum>val)
dr=mij-1;
else if(a[mij].sum==val)
return mij;}
return 0;}
void gen(){
int i,j,k;
for(i=1; i<=n; ++i)
for(j=i; j<=n; ++j)
for(k=j; k<=n; ++k){
a[++m].x=v[i];
a[m].y=v[j];
a[m].z=v[k];
a[m].sum=v[i]+v[j]+v[k];}}
void solve(){
int i,poz;
scanf("%d%d",&n,&s);
for(i=1; i<=n; ++i)
scanf("%d",&v[i]);
gen();
sort(a+1,a+m+1,cmp);
for(i=1; i<=m; ++i){
poz=cbin(s-a[i].sum);
if(poz){
printf("%d %d %d %d %d %d",a[i].x,a[i].y,a[i].z,a[poz].x,a[poz].y,a[poz].z);
i=m+1;}}
if(i==m+1)
printf("-1");}
int main(){
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
solve();
return 0;}