Pagini recente » Cod sursa (job #742333) | Cod sursa (job #330474) | Cod sursa (job #2897277) | Cod sursa (job #466688) | Cod sursa (job #3165873)
#include <bits/stdc++.h>
#define START ios::sync_with_stdio(false); fin.tie(NULL); fout.tie(NULL);
#define STOP fin.close(); fout.close(); return 0;
#define DMAX 1000000
#define MAX 100
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct str
{
int sum;
int x, y, z;
};
int cmp(str A, str B)
{
if(A.sum >= B.sum)
return 0;
return 1;
}
int n, cnt, sum;
str sum_tri[DMAX+1], A, B, aux;
int v[MAX+1];
bool ok = false;
int main()
{
START
fin >> n >> sum;
for(int i=1; i<=n; i++)
fin >> v[i];
for(int i=1; i<=n; i++)
{
for(int j=i; j<=n; j++)
{
for(int k=j; k<=n; k++)
{
sum_tri[cnt].sum = v[i]+v[j]+v[k];
sum_tri[cnt].x = v[i];
sum_tri[cnt].y = v[j];
sum_tri[cnt++].z = v[k];
}
}
}
sort(sum_tri,sum_tri+cnt,cmp);
for(int i=0; i<cnt; i++)
cout << sum_tri[i].sum << ' ';
cout << '\n';
for(int i=0; i<cnt; i++)
{
int dif = sum-sum_tri[i].sum;
aux.sum = dif;
int ind = lower_bound(sum_tri,sum_tri+cnt,aux,cmp)-sum_tri;
//cout << sum_tri[i].sum << ' ' << sum-sum_tri[i].sum << " -> " << sum_tri[ind].sum << '\n';
if((sum_tri[i].sum+sum_tri[ind].sum) == sum)
{
ok = true;
A = sum_tri[i];
B = sum_tri[ind];
break;
}
}
if(ok==false)
{
fout << -1;
return 0;
}
else
{
fout << A.x << ' ' << A.y << ' ' << A.z << ' ';
fout << B.x << ' ' << B.y << ' ' << B.z;
}
STOP
}