Pagini recente » Cod sursa (job #2024109) | Cod sursa (job #294066) | Cod sursa (job #1746159) | Cod sursa (job #1208488) | Cod sursa (job #542926)
Cod sursa(job #542926)
// http://infoarena.ro/problema/loto
#include <fstream>
#include <algorithm>
using namespace std;
#define maxSize 101
ifstream in("loto.in");
ofstream out("loto.out");
struct stuff {
int first,second,third;
int sum;
};
stuff sum[maxSize*maxSize*maxSize];
bool comp(stuff first,stuff second);
int main() {
int number,dreamedSum;
int length = 0;
int input[maxSize];
in >> number >> dreamedSum;
for(int i=1;i<=number;i++)
in >> input[i];
// calculam toate sumele de trei numere
// (suma cautate de noi, de sase numere,
// va fi suma a doua sume de trei numere)
for(int i=1;i<=number;i++)
for(int j=1;j<=number;j++)
for(int k=1;k<=number;k++) {
sum[++length].first = input[i];
sum[length].second = input[j];
sum[length].third = input[k];
sum[length].sum = input[i] + input[j] + input[k];
}
// sortam in ordine crescatoare
sort(sum+1,sum+length+1,comp);
/*int left,right,middle,toBeFound;
for(int i=1;i<=length;i++) {
left = 1;
right = length;
toBeFound = dreamedSum - sum[i].sum;
while(left <= right) {
middle = (left + right) >> 1;
if(sum[middle].sum == toBeFound) {
out << sum[i].first << " " << sum[i].second << " " << sum[i].third << " ";
out << sum[middle].first << " " << sum[middle].second << " " << sum[middle].third << " ";
in.close();
out.close();
return (0);
}
else
if(sum[middle].sum < toBeFound)
left = middle + 1;
else
right = middle - 1;
}
}*/
out << "-1\n";
in.close();
out.close();
return (0);
}
bool comp(stuff first,stuff second) {
return (first.sum < second.sum);
}