Pagini recente » Cod sursa (job #2563992) | Cod sursa (job #2901735) | Cod sursa (job #1968569) | Cod sursa (job #1993932) | Cod sursa (job #775716)
Cod sursa(job #775716)
#include <fstream>
#include <algorithm>
#define NMAx 110
#define MMAx 1000100
using namespace std;
int N,S,Nr,A[NMAx],B[MMAx],V[MMAx],Used[3][MMAx];
bool cmp(int X,int Y) {
return B[V[X]]<B[V[Y]];
}
void Afis(int i,int j) {
ofstream out("loto.out");
if(i==-1)
out<<"-1\n";
else {
for(int k=0;k<=2;out<<Used[k++][i]<<' ');
for(int k=0;k<=2;out<<Used[k++][j]<<' ');
out<<'\n';
}
out.close();
}
void Solve() {
int i,j,k;
for(i=1;i<=N;i++)
for(j=i;j<=N;j++)
for(k=j;k<=N;k++) {
B[++Nr]=A[i]+A[j]+A[k];
Used[0][Nr]=A[i];
Used[1][Nr]=A[j];
Used[2][Nr]=A[k];
}
for(i=1;i<=Nr;V[i]=i++);
sort(V+1,V+Nr+1,cmp);
for(i=1,j=Nr;i<=j;) {
while(B[V[i]]+B[V[j]]>S) j--;
while(B[V[i]]+B[V[j]]<S) i++;
if(B[V[i]]+B[V[j]]==S) {
Afis(V[i],V[j]);
return;
}
}
Afis(-1,-1);
}
void Citire() {
ifstream in("loto.in");
in>>N>>S;
for(int i=1;i<=N;in>>A[i++]);
in.close();
}
int main() {
Citire();
Solve();
return 0;
}