Pagini recente » Cod sursa (job #183352) | Cod sursa (job #2178527) | Cod sursa (job #26155) | Cod sursa (job #943718) | Cod sursa (job #2265919)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int N, S, S1, S2;
int A[101];
bitset<600000001> SUM;
void searchWithBreak(){
for (int i = 0; i < N;i++)
for(int j = 0; j < N;j++)
for(int k = 0; k < N;k++) {
//cout << A[i] + A[j] + A[k] << " " << S - A[i] + A[j] + A[k] << endl;
if (SUM[A[i] + A[j] + A[k]] && SUM[S - (A[i] + A[j] + A[k])] ) {
S1 = A[i] + A[j] + A[k];
S2 = N - A[i] + A[j] + A[k];
return ;
}
}
}
void lastSearch(){
for (int i = 0; i < N;i++)
for(int j = 0; j < N;j++)
for(int k = 0; k < N;k++) {
if (A[i] + A[j] + A[k] == S1){
fout << A[i] << " " << A[j] << " " << A[k] <<" ";
S1 = -1;
}
if (A[i] + A[j] + A[k] == S2){
fout << A[i] << " " << A[j] << " " << A[k] <<" ";
S2 = -1;
}
}
}
int main(){
//cout << sizeof(SUM);
fin >> N >> S;
for( int i = 0; i < N;i++) fin >> A[i];
for (int i = 0; i < N;i++)
for(int j = 0; j < N;j++)
for(int k = 0; k < N;k++) SUM[A[i] + A[j] + A[k]] = 1;
//for (int i = 0; i < S; i++) cout << SUM[i];
//cout << endl;
searchWithBreak();
lastSearch();
//cout << S1 << " " << S2;
return 0;
}