Pagini recente » Cod sursa (job #2227673) | Cod sursa (job #2102485) | Cod sursa (job #1529856) | Cod sursa (job #2132885) | Cod sursa (job #1791598)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
const int NMAX = 1000005;
struct num{
int a,b,c,sum;
};
num a[NMAX];
int N,S,v[105];
bool cmp(struct num &a,struct num &b)
{
if(a.sum < b.sum)
return true;
return false;
}
int bin_search(int val,int left,int right)
{
int mid;
while(left <= right){
mid = (left + right)>>1;
if(a[mid].sum == val)
return mid;
if(a[mid].sum < val)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
int main()
{
in>>N>>S;
for(int i = 1 ; i <= N ; ++i)
in>>v[i];
int lg = 0;
for(int i = 1 ; i <= N ; ++i)
for(int j = i ; j <= N ; ++j)
for(int k = j ; k <= N ; ++k){
a[++lg].a = v[i];
a[lg].b = v[j];
a[lg].c = v[k];
a[lg].sum = v[i]+v[j]+v[k];
}
sort(a+1,a+N+1,cmp);
for(int i = 1 ; i <= N ; ++i)
for(int j = i ; j <= N ; ++j)
for(int k = j ; k <= N ; ++k){
int val = S - v[i] - v[j] - v[k];
int key = bin_search(val,1,lg);
if(key != -1){
out<<i<<" "<<j<<" "<<k<<" "<<a[key].a<<" "<<a[key].b<<" "<<a[key].c;
return 0;
}
}
out<<-1;
return 0;
}