Pagini recente » Cod sursa (job #122067) | Cod sursa (job #1008293) | Cod sursa (job #904661) | Cod sursa (job #2152341) | Cod sursa (job #533124)
Cod sursa(job #533124)
// http://infoarena.ro/problema/loto
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
vector<int> input;
vector<int> sum;
void write(int toBeFound);
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++)
sum.push_back(*first+*second+*third);
sort(sum.begin(),sum.end());
while(!sum.empty()) {
while(!sum.empty() && sum.front() + sum.back() > dreamedSum)
sum.pop_back();
if(sum.front() + sum.back() == dreamedSum) {
write(sum.front());
write(sum.back());
return (0);
}
while(!sum.empty() && sum.front() + sum.back() < dreamedSum)
sum.erase(sum.begin());
}
out << -1;
return (0);
}
void write(int toBeFound) {
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++)
if(*first + *second + *third == toBeFound) {
out << *first << " " << *second << " " << *third << " ";
return;
}
}