Cod sursa(job #1009901)

Utilizator dan.ghitaDan Ghita dan.ghita Data 13 octombrie 2013 23:14:06
Problema Loto Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<iostream>
#include<fstream>
#include<map>
#include<algorithm>
#include<vector>
using namespace std;
vector<int> v;
vector<int>::iterator it, jt, kt;
ifstream f("loto.in");
ofstream g("loto.out");

int r, n, S, a, nr;
struct suma{
int a, b, c;
};
vector<int> sum;
vector<int>::iterator ist, gasit, jst;
map<int, suma> m;

void afisare(){
g<<m[*ist].a<<' '<<m[*ist].b<<' '<<m[*ist].c<<' '<<m[*jst].a<<' '<<m[*jst].b<<' '<<m[*jst].c<<'\n';
}
int main()
{
    f>>n>>S;
    for(int i=0; i<n; ++i){f>>a; v.push_back(a);}
    suma s1;
    for(it=v.begin(); it!=v.end(); ++it)
    for(jt=it; jt!=v.end(); ++jt)
    for(kt=jt; kt!=v.end(); ++kt){
    int y=*it+*jt+*kt;
    if(m[y].a) continue;
    else{
    s1.a=*it; s1.b=*jt; s1.c=*kt;
    sum.push_back(y); //cout<<y<<' ';
    m[y]=s1;}
    }
    //sort(sum.begin(), sum.end());
   /* for(ist=sum.begin(); ist!=sum.end(); ++ist){
        jst=lower_bound(sum.begin(), sum.end(), S-(*ist));
        if(*jst==S-(*ist)){afisare(); g.close(); return 0;}
    }*/
    for(ist=sum.begin(); ist!=sum.end(); ++ist)
        for(jst=sum.begin(); jst!=sum.end(); ++jst)
            if(*ist+*jst==S) {afisare(); g.close(); return 0;}
    g<<"-1";
    g.close();
    return 0;
}