Cod sursa(job #1111395)

Utilizator denis_tdrdenis tdr denis_tdr Data 18 februarie 2014 20:53:24
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
typedef struct triplet{
    int a, b, c, s;
    triplet(int x, int y, int z){a=x; b=y; c=z; s=x+y+z;}
    triplet(){}
};
class comp1{
    public: bool operator()(triplet a, triplet b){
    return a.s<b.s;
    };
};
bool cmp1(triplet t1, triplet t2 ){ return t1.s<t2.s;}
bool cmp2(triplet t1, int s){ return t1.s<s;}
int n, s;
vector<int> v;
set<triplet, comp1> t;
ofstream g("loto.out");
void citire(){
    ifstream f("loto.in");
    f>>n>>s;
    while(f>>n)
        v.push_back(n);
    n=v.size();
    v.resize(n);
}

void afisT(triplet t){ g<<t.a<<" "<<t.b<<" "<<t.c<<" ";}
int main(){

    citire();
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            for(int k=0;k<n;k++)
                t.insert(triplet(v[i], v[j], v[k]));
    set<triplet>::iterator it, it2;
    it=t.begin();
    while(it!=t.end())
    {
        it2=lower_bound(t.begin(), t.end(), s-it->s, cmp2);
        if(it2->s+it->s==s)
            {afisT(*it), afisT(*it2); return 0;}
        it++;
    }
    g<<"-1";
    return 0;
}