Pagini recente » Cod sursa (job #556690) | Cod sursa (job #2947085) | Cod sursa (job #2939633) | Cod sursa (job #268729) | Cod sursa (job #483642)
Cod sursa(job #483642)
#include <iostream>
#include <algorithm>
#include <fstream>
#include <string>
using namespace std;
#define FILE_IN "loto.in"
#define FILE_OUT "loto.out"
int N, S;
int NR[100];
int NR_SUME;
long long SUME[1000000];
int main()
{
ifstream fisIn(FILE_IN);
fisIn >> N >> S;
for (int i=0; i<N; i++) fisIn >> NR[i];
long long* ptr = SUME;
for (int i=0; i<N; i++)
{
long long nrI = NR[i];
for (int j=0; j<N; j++)
{
long long suma = nrI+NR[j];
for (int k=0; k<N; k++)
*ptr++ = (suma+NR[k])*1000000LL+i*10000+j*100+k;
}
}
sort(SUME, ptr);
NR_SUME = ptr-SUME;
ofstream fisOut(FILE_OUT);
for (int i=0; i<NR_SUME; i++)
{
int suma = SUME[i]/1000000;
if (suma>(S >> 1)) break;
ptr = lower_bound(SUME, SUME+NR_SUME, (S-suma)*1000000LL);
if ((ptr != SUME+NR_SUME) && ((S-suma) == *ptr/1000000LL))
{
fisOut
<< (NR[(SUME[i]/10000)%100]) << " "
<< (NR[(SUME[i]/100)%100]) << " "
<< (NR[SUME[i]%100]) << " "
<< (NR[(*ptr/10000)%100]) << " "
<< (NR[(*ptr/100)%100]) << " "
<< (NR[*ptr%100]);
return 0;
}
}
fisOut << -1;
}