Cod sursa(job #1328932)

Utilizator tudorcomanTudor Coman tudorcoman Data 28 ianuarie 2015 21:34:22
Problema Loto Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.08 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream fi ("loto.in");
ofstream fo ("loto.out");

struct loto
{
    int sum,a,b,c;
}v[400000];

int ff(loto x , loto y)
{
    return x.sum<y.sum;
}
int n,s,k,i,j,o[101],nr;
inline void citire()
{
    fi >> n >> s;
    for(i=1; i<=n; i++)
        fi >> o[i];
    fi.close();
}
int main()
{
    citire();

    for(i=1; i<=n; i++)
        for(j=i; j<=n; j++)
            for(k=j; k<=n; k++)
            {
                v[++nr].sum=o[i]+o[j]+o[k];
                v[nr].a=o[i];
                v[nr].b=o[j];
                v[nr].c=o[k];
            }

    sort(v+1,v+nr+1,ff);

    int mic=1,mare=nr;

    while(mic<=mare)
    {
        if(v[mic].sum+v[mare].sum>s)
            mare--;
        else if(v[mic].sum+v[mare].sum<s)
            mic++;
        else
            break;
    }

    if(mic>mare)
        fo<<-1;
    else
        fo << v[mic].a << " " << v[mic].b << " " << v[mic].c << " " << v[mare].a << " " << v[mare].b << " " << v[mare].c;
    fo.close();
    return 0;
}