Pagini recente » Cod sursa (job #1370219) | Cod sursa (job #1359310) | Cod sursa (job #1836321) | Cod sursa (job #1008726) | Cod sursa (job #775722)
Cod sursa(job #775722)
#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[X]<B[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&&i<=j) j--;
while(B[V[i]]+B[V[j]]<S&&i<=j) 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;
}