Cod sursa(job #2106710)

Utilizator bori2000Fazakas Borbala bori2000 Data 16 ianuarie 2018 08:48:08
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.6 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <map>
using namespace std;

int a[101];
int n, s;

void feltolt(map<int, int> &elozo, map<int, int> &kov)
{
    bool t=1;
    for(map<int, int>::iterator it=elozo.begin(); it!=elozo.end(); it++)
    {
        if(it->first<s)
        {
            t=1;
            for(int i=1; i<=n and t; i++)
            {
                if(it->first+a[i]<=s) kov[it->first+a[i]]=i;
                else t=false;
            }
        }
    }
    //elozo.clear();
};



int main()
{
    ifstream f("loto.in");
    ofstream g("loto.out");

    f>>n>>s;
    for(int i=1; i<=n; i++) f>>a[i];
    sort(a+1, a+n+1);

    map<int, int> osszeg;
    map<int, int> osszeg2;
    map<int, int> osszeg3;
    map<int, int> osszeg4;
    map<int, int> osszeg5;
    map<int, int> osszeg6;


    int k=0;
    for(int i=1; i<=n; i++) osszeg[a[i]]=i;

    /*for(map<int, int>::iterator it=osszeg.begin(); it!=osszeg.end(); it++) cout<<it->first<<" ";
    cout<<endl;*/

    feltolt(osszeg, osszeg2);
    /*for(map<int, int>::iterator it=osszeg2.begin(); it!=osszeg2.end(); it++) cout<<it->first<<" ";
    cout<<endl;*/

    feltolt(osszeg2, osszeg3);
    /*for(map<int, int>::iterator it=osszeg3.begin(); it!=osszeg3.end(); it++) cout<<it->first<<" ";
    cout<<endl;*/

    feltolt(osszeg3, osszeg4);
    /*for(map<int, int>::iterator it=osszeg4.begin(); it!=osszeg4.end(); it++) cout<<it->first<<" ";
    cout<<endl;*/

    feltolt(osszeg4, osszeg5);
    /*for(map<int, int>::iterator it=osszeg5.begin(); it!=osszeg5.end(); it++) cout<<it->first<<" ";
    cout<<endl;*/

    feltolt(osszeg5, osszeg6);
    /*for(map<int, int>::iterator it=osszeg6.begin(); it!=osszeg6.end(); it++) cout<<it->first<<" ";
    cout<<endl;*/





    if(osszeg6.find(s)!=osszeg6.end())
    {
        g<<a[osszeg6.find(s)->second]<<" ";
        s-=a[osszeg6.find(s)->second];
        //cout<<s<<endl;

        g<<a[osszeg5.find(s)->second]<<" ";
        s-=a[osszeg5.find(s)->second];
        //cout<<s<<endl;

         g<<a[osszeg4.find(s)->second]<<" ";
        s-=a[osszeg4.find(s)->second];
        //cout<<s<<endl;

         g<<a[osszeg3.find(s)->second]<<" ";
        s-=a[osszeg3.find(s)->second];
          //cout<<s<<endl;

         g<<a[osszeg2.find(s)->second]<<" ";
        s-=a[osszeg2.find(s)->second];
          //cout<<s<<endl;

         g<<a[osszeg.find(s)->second]<<" ";
          s-=a[osszeg.find(s)->second];
           //cout<<s<<endl;
        //s-=osszeg.find(s)->second;*/
    }
    else g<<"-1"<<endl;
    return 0;
}