Pagini recente » Rating alfabet (abcdefghijk) | Cod sursa (job #2238387) | Cod sursa (job #652914) | Cod sursa (job #1602212) | Cod sursa (job #542935)
Cod sursa(job #542935)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct stuff {
int sum;
int first; int second; int third;
};
stuff sum[1000000];
bool comp(stuff first,stuff second);
int main ()
{
int n, s, i, j, k, p, v[101];
in >> n >> s;
for (i=1; i<=n; i++)
in >> v[i];
p=1;
for (i=1; i<=n; i++)
for (j=i; j<=n; j++)
for (k=j; k<=n; k++) {
sum[p].sum=v[i]+v[j]+v[k];
sum[p].first=v[i];
sum[p].second=v[j];
sum[p].third=v[k];
p++;
}
sort(sum+1, sum+p, comp);
int st, dr, x, t;
for (i=1; i<p; i++) {
st=1;
dr=p;
x=s-sum[i].sum;
while (st<=dr) {
t=(st+dr)/2;
if (x==sum[t].sum) {
//printf ("%d %d %d %d %d %d", sum[i].first, sum[i].second, sum[i].third, sum[t].first, sum[t].second, sum[t].third);
out << sum[i].first << " " << sum[i].second << " " << sum[i].third << " ";
out << sum[t].first << " " << sum[t].second << " " << sum[t].third << "\n";
return 0;
} else {
if (x<sum[t].sum)
dr=t-1;
else
st=t+1;
}
}
}
out << "-1";
return 0;
}
bool comp(stuff first,stuff second) {
return (first.sum < second.sum);
}