Pagini recente » Cod sursa (job #1136245) | Cod sursa (job #2231842) | Cod sursa (job #645396) | Cod sursa (job #212384) | Cod sursa (job #955723)
Cod sursa(job #955723)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int MAXN = 110, mod = 666013;
int N, v[MAXN], S, sum, poz;
vector <int> has[mod];
int cautare(int aux, int va)
{
int n = has[aux].size();
for(int poz=0; poz<n; ++poz)
if(has[aux][poz] == va)
return true;
return false;
}
void scrie(int sss)
{
int i, j, k;
for(i=0; i<N; ++i)
for(j=0; j<N; ++j)
for(k=0; k<N; ++k)
{
sum = v[i] + v[j] + v[k];
if(sum == sss)
{
fout << v[i] << " " << v[j] << " " << v[k];
return;
}
}
}
int main()
{
int i, j, k, aux, aux1;
int x;
fin >> N >> S;
for(i=0; i<N; ++i)
fin >> v[i];
for(i=0; i<N; ++i)
for(j=0; j<N; ++j)
for(k=0; k<N; ++k)
{
sum = v[i] + v[j] + v[k];
aux = sum%mod;
has[aux].push_back(sum);
}
for(i=0; i<N; ++i)
for(j=0; j<N; ++j)
for(k=0; k<N; ++k)
{
sum = v[i] + v[j] + v[k];
aux1 = (S-sum)%mod;
x = cautare(aux1, S-sum);
if(x)
{
fout << v[i] << " " << v[j] << " " << v[k] << " ";
scrie(S - sum);
return 0;
}
}
fout << -1;
fin.close();
fout.close();
return 0;
}