Pagini recente » Cod sursa (job #1341709) | Cod sursa (job #2560754) | Cod sursa (job #999697) | Cod sursa (job #2266722) | Cod sursa (job #732165)
Cod sursa(job #732165)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
long long n,a[111],b[1111111],s;
bool exista(long long x)
{
int i,pas=1<<19;
for(i=0;pas;pas>>=1)
{
if(i+pas<=n && b[i+pas]<=x)
i+=pas;
}
if(b[i]==x)
return true;
return false;
}
void termina(long long x)
{
int i,j,ii;
for(i=1;i<=n;++i)
{
for(j=i;j<=n;++j)
{
for(ii=j;ii<=n;++ii)
{
if(x==a[i]+a[j]+a[ii])
{
out<<a[i]<<" "<<a[j]<<" "<<a[ii];
return;
}
}
}
}
return;
}
int main()
{
int i,j,ii,nr=0;
in>>n>>s;
for(i=1;i<=n;++i)
in>>a[i];
for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
for(ii=j;ii<=n;++ii)
{
b[++nr]=a[i]+a[j]+a[ii];
}
sort(b+1,b+nr+1);
for(i=1;i<=nr;++i)
{
if(exista(s-b[i]))
{
termina(b[i]);
out<<" ";
termina(s-b[i]);
out<<"\n";
return 0;
}
}
return 0;
}