Pagini recente » Cod sursa (job #2561351) | Cod sursa (job #2913559) | Cod sursa (job #2939727) | Cod sursa (job #1185209) | Cod sursa (job #1809895)
#include <iostream>
#include <fstream>
using namespace std;
const int t=666019;
int n,nr,vf[1000002],urm[1000002],lst[t];
int s,a[103];
bool exista( int x )
{
int p,r=x%t;
p=lst[r];
while(p!=0)
{
if(vf[p]==x)
return 1;
p=urm[p];
}
return 0;
}
void adauga(int x)
{
if(exista(x)) return;
int r=x%t;
nr++;
vf[nr]=x;
urm[nr]=lst[r];
lst[r]=nr;
}
ifstream f("loto.in");
ofstream g("loto.out");
void afisare(int x)
{
int i, j, k;
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
for(k=j; k<=n; k++)
if(a[i]+a[j]+a[k]==x)
{
g<<a[i]<<" "<<a[j]<<" "<<a[k]<<'\n';
return;
}
}
int main()
{
f>>n>>s;
int i, j, k;
for(i=1; i<=n; i++)
f>>a[i];
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
for(k=j; k<=n; k++)
adauga(a[i]+a[j]+a[k]);
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
for(k=j; k<=n; k++)
if(a[i]+a[j]+a[k]<=s && exista(s-a[i]-a[j]-a[k]))
{
g<<a[i]<<" "<<a[j]<<" "<<a[k]<<" ";
afisare(s-a[i]-a[j]-a[k]);
return 0;
}
g<<-1;
f.close(); g.close();
return 0;
}