Pagini recente » Cod sursa (job #219383) | Cod sursa (job #533138)
Cod sursa(job #533138)
// http://infoarena.ro/problema/loto
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct stuff {
int first,second,third;
int value;
};
bool myComp(stuff one,stuff two) {
return (one.value < two.value);
}
vector<int> input;
vector<stuff> sum;
int main() {
int number,dreamedSum,tmp;
in >> number >> dreamedSum;
for(int i=1;i<=number;i++) {
in >> tmp;
input.push_back(tmp);
}
vector<int>::iterator first,second,third;
for(first=input.begin();first!=input.end();first++)
for(second=input.begin();second!=input.end();second++)
for(third=input.begin();third!=input.end();third++) {
stuff tmp;
tmp.first = *first;
tmp.second = *second;
tmp.third = *third;
tmp.value = *first + *second + *third;
sum.push_back(tmp);
}
sort(sum.begin(),sum.end(),myComp);
int begin = 0;
int end = sum.size() - 1;
while(begin != end) {
while(sum[begin].value + sum[end].value > dreamedSum && end!=begin)
end--;
if(sum[begin].value + sum[end].value == dreamedSum) {
out << sum[begin].first << " " << sum[begin].second << " " << sum[begin].third << " ";
out << sum[end].first << " " << sum[end].second << " " << sum[end].third << "\n";
return (0);
}
while(sum[begin].value + sum[end].value < dreamedSum && begin!=end)
begin++;
}
out << "-1\n";
return (0);
}