Pagini recente » Cod sursa (job #1269510) | Cod sursa (job #2379655) | Cod sursa (job #931953) | Cod sursa (job #2335696) | Cod sursa (job #2895395)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <unordered_map>
using namespace std;
unordered_map<long long, pair<pair<int, int>, int>> strct;
int main()
{
ifstream f("loto.in");
ofstream g("loto.out");
int i,j,ok=0,k,a[105];
long long int n,s1,s=0,diferenta=0;
f>>n>>s;
for(i=0;i<n;i++)
f>>a[i];
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
for(k=j;k<n;k++)
{
//calculam toate sumele de cate 3 elemente si le introducem in hash
s1=a[i]+a[j]+a[k];
strct[s1]=make_pair(make_pair(i, j),k);
}
}
}
//verificam daca mai exista o alta suma formata din 3 elemente pe care o putem aduna la suma curenta pentru a ajunge la s
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
for(k=j;k<n;k++)
{
diferenta=s-(a[i]+a[j]+a[k]);
if(strct.find(diferenta)!=strct.end())
{
g<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<a[strct[diferenta].first.first]<<" "<<a[strct[diferenta].first.second]<<" "<<a[strct[diferenta].second];
ok=1;
break;
}
if(ok==1)
break;
}
if(ok==1)
break;
}
if(ok==1)
break;
}
if(ok==0)
{
g<<"-1";
}
return 0;
}