Pagini recente » Cod sursa (job #2452902) | Cod sursa (job #3225000) | Cod sursa (job #2577758) | Cod sursa (job #601641) | Cod sursa (job #2966142)
#include <iostream>
#include <iterator>
#include <map>
using namespace std;
FILE *in = fopen("loto.in", "r"), *out = fopen("loto.out", "w");
int N, S;
int t[105];
map <int, int> m1;
int main()
{
fscanf(in, "%d %d", &N, &S);
for (int i = 0; i < N; ++i)
fscanf(in, "%d", &t[i]);
for (int i = 0; i < N; ++i)
for (int j = i; j < N; ++j)
for (int k = j; k < N; ++k){
m1[t[i] + t[j] + t[k]] = t[i]*100*100 + t[j]*100 + t[k];
}
map<int, int>::iterator itl, itr, itm;
int grp1, grp2;
for(auto it1 = m1.begin(); it1 != m1.end(); ++it1)
for(auto it2 = it1; it2 != m1.end(); ++it2){
if (it1->first + it2->first == S){
grp1 = it1->second;
grp2 = it2->second;
fprintf(out, "%d %d %d %d %d %d", grp1/100/100, grp1/100%100, grp1%100, grp2/100/100, grp2/100%100, grp2%100);
return 0;
}
/*
itl = m1.begin();
itr = m1.end();
while (itl != itr){
itm = advance((itl + itr)/2;
if (S < itm->first + it1->first)
itr = itm - 1;
else if (S > itm->first + it1->first)
itl = itm + 1;
else {
grp1 = it1->second;
grp2 = itm->second;
fprintf(out, "%d %d %d %d %d %d", grp1/100/100, grp1/100, grp1%100, grp2/100/100, grp2/100, grp2%100);
return 0;
}
}
*/
}
fprintf(out, "-1");
return 0;
}