Cod sursa(job #1337024)

Utilizator VictoriaNevTascau Victoria VictoriaNev Data 8 februarie 2015 15:24:02
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define NMAX 100000000
using namespace std;
int n, s, i, j, k, nr, este, v[NMAX+1];
struct ceva
{
    int first;
    int second;
    int third;
    int s;
} x[NMAX+1];
bool cmp(ceva a,ceva b)
{
    return a.s<b.s;
}
int main()
{
    ifstream cin("loto.in");
    ofstream cout("loto.out");
    cin>>n>>s;
    for(i=1; i<=n; i++)
        cin>>v[i];
    for(i=1; i<=n; i++)
        for(j=i; j<=n; j++)
            for(k=j; k<=n; k++)
                nr++,x[nr].first=v[i],x[nr].second=v[j],x[nr].third=v[k],x[nr].s=x[nr].first+x[nr].second+x[nr].third;
    sort(x+1,x+nr+1,cmp);
    este=1;
    for(i=1; i<=nr; i++)
    {
        int suma=s-x[i].s;
        int st=1;
        int dr=nr;
        while(st<=dr&&este)
        {
            int med=(st+dr)/2;
            if(x[med].s==suma)
            {
                cout<<x[i].first<<' '<<x[i].second<<' '<<x[i].third<<' '<<x[med].first<<' '<<x[med].second<<' '<<x[med].third<<'\n';
                este=0;
            }
            if(x[med].s>suma)
                dr=med-1;
            if(x[med].s<suma)
                st=med+1;
        }

    }
    if(este)
        cout<<-1<<'\n';
    return 0;
}