Pagini recente » Cod sursa (job #2066001) | Cod sursa (job #2845470) | Cod sursa (job #2469930) | Cod sursa (job #2558521) | Cod sursa (job #2438706)
#include <bits/stdc++.h>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int n,s,a[110];
bool ok;
vector<pair<int,pair<int,pair<int,int>>>> v[10000];
const int mod=9973;
void add(int n,int i,int j,int k)
{
int r=n%mod;
v[r].push_back({n,{i,{j,k}}});
}
void Find(int n,int i,int j,int k,bool &ok)
{
int r=n%mod;
int sz=v[r].size();
for(int it=0;it<sz;it++)
if(n==v[r][it].first)
{
ok=1;
out<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<v[r][it].second.first<<" "<<v[r][it].second.second.first<<" "<<v[r][it].second.second.second;
return;
}
}
int main()
{
in>>n>>s;
for(int i=1;i<=n;i++) in>>a[i];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
add(a[i]+a[j]+a[k],i,j,k);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
{
ok=0;
Find(s-a[i]-a[j]-a[k],i,j,k,ok);
if(ok) return 0;
}
out<<-1;
}