Pagini recente » Cod sursa (job #1761778) | Cod sursa (job #1138529) | Cod sursa (job #1105345) | Cod sursa (job #114675) | Cod sursa (job #1415424)
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;
ifstream f ("loto.in");
ofstream g ("loto.out");
int n,sum;
int v[1000],s[10000000];
bool cautbin(int x) {
int prim=s[0],ultim=s[n-1],mij=s[(n-1)/2];
while(s[mij]!=x&&(mij!=ultim || mij !=prim)){
if(x<v[mij]){
ultim=mij;
}
else{
prim=mij;
}
mij=(prim+ultim)/2;
}
if(s[mij]==x)
return true;
else
return false;
}
int main()
{
f>>n>>sum;
int x,i,j,k,i1,j1,k1,ns;
for(i=0; i<n; i++){
f>>v[i];
}
ns=0;
for(i=0;i<n; i++){
for(j=0; j<n; j++){
for(k=0; k<n; k++){
s[ns++]=v[i]+v[j]+v[k];
}
}
}
sort(s, s+ns);
for(i=0;i<n; i++){
for(j=0; j<n; j++){
for(k=0; k<n; k++){
int x = sum - v[i] - v[j] - v[k];
if (cautbin(x) == true) {
for (i1 = 0; i1 < n; ++i1)
for (j1 = 0; j1 < n; ++j1)
for (k1 = 0; k1 < n; ++k1) {
if (v[i1] + v[j1] + v[k1] == x) {
g << v[i] << " " << v[j] << " " << v[k] << " " << v[i1] << " " << v[j1] << " " << v[k1];
return 0;
}
}
}
}
}
}
g << "-1";
return 0;
}