Pagini recente » Istoria paginii utilizator/edycristi | Cod sursa (job #1994444) | Cod sursa (job #1282176) | Cod sursa (job #1649757) | Cod sursa (job #136614)
Cod sursa(job #136614)
#include<fstream.h>
using namespace std;
#define smax 1000100
#define nmax 200
ifstream f("loto.in");
ofstream g("loto.out");
int s[smax], a[nmax], n, i, nr, j, k, st, dr, mij, ok;
long S;
void suma(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]<<' ';
return;
}
}
int main()
{
f>>n>>S;
for(i=1; i<=n; i++) f>>a[i];
f.close();
nr=0;
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
for(k=j; k<=n; k++)
s[++nr]=a[i]+a[j]+a[k];
sort( s+1, s+nr+1 );
ok=0; st=1; dr=nr;
for(st=1; st<=dr && !ok ; st++){
while( s[st]+s[dr]>S && dr>0 ) dr--;
if( s[st] + s[dr] == S ) ok=1;
}
st--;
if(ok){
suma(s[st]);
suma(s[dr]);
}
else g<<"-1";
g.close();
return 0;
}