Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/rasid_cetin_321ca | Cod sursa (job #1999032) | Cod sursa (job #3295887) | Cod sursa (job #834446)
Cod sursa(job #834446)
//Vasilut
#include<fstream>
#include<map>
#include<utility>
#define NN 105
#define mp make_pair
#define f first
#define s second
using namespace std;
ofstream out("loto.out");
map< int , pair<int,int > > M; // hash
typedef map <int , pair<int , int > >::iterator IT;
int n,v[NN],S;
void read();
void solve();
void prep();
int main()
{
read();
solve();
return 0;
}
void prep()
{
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
for(int k=i;k<=n;k++)
{
int sum = v[i] + v[j] + v[k];
M.insert( mp ( sum , mp ( v[i] , v[j] ) ) );
}
}
}
}
void read()
{
ifstream in("loto.in");
in>>n>>S;
for(int i=1;i<=n;i++)
in>>v[i];
prep();
}
void solve()
{
IT I,J;
for ( I = M.begin() ; I!=M.end(); ++I )
{
int sum = I->f;
J = M.find( S-sum );
if ( J!=M.end() )
{
int nr1,nr2,nr3,nr4,nr5,nr6;
nr1 = (I->s).f;
nr2 = (I->s).s;
nr3 = I->f - nr1 - nr2;
nr4 = (J->s).f;
nr5 = (J->s).s;
nr6 = J->f - nr4 - nr5;
out << nr1 << " "<< nr2 <<" " << nr3 <<" "<< nr4<< " "<<nr5 << " "<< nr6 <<" ";
return ;
}
}
out<<-1;
}