Pagini recente » Cod sursa (job #378263) | Cod sursa (job #1046787) | Cod sursa (job #2562602) | Cod sursa (job #256146) | Cod sursa (job #396527)
Cod sursa(job #396527)
#include <fstream>
#include <cstdlib>
using namespace std;
int n,s,v[100],sum[161700];
ifstream f("loto.in");
ofstream o("loto.out");
bool comp(int a,int b){return a<b;}
void exe (int x)
{
for (int i = 1; i <= N; ++i)
for (int j = 1; j <= N; j++)
for (int k = 1; k <= N; ++k)
if (v[i] + v[j] + v[k] == x) {o<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";return;}
}
int bs (int m) {
int i, step;
for (step = 1; step < v[0]; step <<= 1) {}
for (i = 0; step; step >>= 1) {
if (i + step <= v[0] && sum[i + step] <= S - sum[m]) {
i += step;
}
}
if (sum[i]==S-sum[m]) {
exe(a[i]);
exe(a[m]);
return 1;
}
return -1;
}
int main () {
f>>n>>s;
for (int i = 1;i<=n;i++)
f>>v[i];
for (int i=1;i<=n;i++)
for (int j=i;j<=n;j++)
for (int k =j;k<=n;k++)
sum[++sum[0]]=v[i]+v[j]+v[k];
qsort (a+1,sum[0],sizeof(int),comp);
for (int i=1;i<=sum[0];i++)
if (bs(i)) {
return 0;
}
}
o<<"-1";
return 0;
}