Pagini recente » Cod sursa (job #1503989) | Cod sursa (job #751432) | Cod sursa (job #3033543) | Cod sursa (job #987030) | Cod sursa (job #2012526)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
class Element{
public:
char a;
char b;
char c;
int s;
Element():a(0),b(0),c(0),s(0) {};
Element(char i, char j, char k): a(i),b(j),c(k) {
s = int(a)+int(b)+int(c);
};
};
// ordering function
bool elemComp (Element x,Element y) {return (x.s<y.s);}
int main(void) {
int s = 0;
int sp = 0;
bool found = false;
int n;
int nmax;
vector<Element> vsum;
int numbers[101];
fstream infile("loto.in", ios::in);
fstream outfile("loto.out", ios::out);
// read n, s
infile>>n>>s;
// read numbers
for(int i=0;i<n; ++i)
infile>>numbers[i];
// compute sums
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
for(int k=0;k<n;++k) {
Element elm(numbers[i], numbers[j], numbers[k]);
vsum.push_back(elm);
}
// sort
sort(vsum.begin(), vsum.end(), elemComp);
//
int size = vsum.size();
nmax = size;
if ((s>=2*vsum[0].s) && (s<=2*vsum[size-1].s)) {
//int nmax = (2*s<vsum[size/2].s)?size/2+1:size;
for(int i=0;i<nmax && !found;++i) {
sp = s-vsum[i].s;
for(int k=i;k<nmax;++k)
if (vsum[k].s==sp) {
found = true;
outfile<<int(vsum[i].a)<<" "<<int(vsum[i].b)<<" "<<int(vsum[i].c)<<" "
<<int(vsum[k].a)<<" "<<int(vsum[k].b)<<" "<<int(vsum[k].c);
break;
}
}
}
if (!found)
outfile<<"-1";
infile.close();
outfile.close();
return 0;
}