Pagini recente » Cod sursa (job #658126) | Cod sursa (job #2264508) | Cod sursa (job #1245719) | Cod sursa (job #66217) | Cod sursa (job #1774121)
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
struct grupa{
int S;
int x, y, z;
};
grupa g[10000];
int v[10000];
int t;
bool cmp(grupa a, grupa b){
return a.S<b.S;
}
int cautare(int s, int d, int x){
int m;
if(s>d)
return 0;
else{
while(s<=d){
m=(s+d)/2;
if(x==g[m].S){
t=m;
return m;
}
else{
if(x<g[m].S)
d=m-1;
else
s=m+1;
}
}
}
}
int main()
{
int n, s, a1, a2, a3, a4, a5, a6, S2;
int n1, n2, n3, n4, n5, n6;
int x=0;
int k=0;
ifstream in("loto.in");
ofstream out("loto.out");
in>>n>>s;
for(int i=0; i<n; i++){
in>>v[i];
}
for(a1=1; a1<=n; a1++)
for(a2=a1; a2<=n; a2++)
for(a3=a2; a3<=n; a3++){
x++;
g[x].S=a1+a2+a3;
g[x].x=a1;
g[x].y=a2;
g[x].z=a3;
}
sort(g, g+n+1, cmp);
for(a4=1; a4<=n; a4++)
for(a5=a4; a5<=n; a5++)
for(a6=a5; a6<=n; a6++){
S2=a4+a5+a6;
if(cautare(0, x, s-S2)){
n1=g[t].x;
n2=g[t].y;
n3=g[t].z;
n4=a4;
n5=a5;
n6=a6;
k=1;
}
}
if(k==1)
out<<n1<<" "<<n2<<" "<<n3<<" "<<n4<<" "<<n5<<" "<<n6<<"\n";
else
out<<"-1";
return 0;
}