Cod sursa(job #834447)

Utilizator lucian666Vasilut Lucian lucian666 Data 14 decembrie 2012 13:06:16
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb



//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=j;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;
}