Cod sursa(job #1281983)

Utilizator ChallengeMurtaza Alexandru Challenge Data 3 decembrie 2014 21:16:55
Problema Loto Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.45 kb
#include <fstream>
#include <algorithm>

using namespace std;

const char InFile[]="loto.in";
const char OutFile[]="loto.out";
const int MaxN=110;
const int SIZE=1000100;

ifstream fin(InFile);
ofstream fout(OutFile);

struct s
{
    int sol1,sol2,sol3,sum;
};

bool cmp_s(s a, s b)
{
    return a.sum<b.sum;
}

int v[MaxN],ind=-1,sum,sol1(-1),sol2,n;
s psol[SIZE];

int main()
{
    fin>>n>>sum;
    for(register int i=0;i<n;++i)
    {
        fin>>v[i];
    }
    fin.close();

    for(register int i1=0;i1<n;++i1)
    {
        for(register int i2=i1;i2<n;++i2)
        {
            for(register int i3=i2;i3<n;++i3)
            {
                ++ind;
                psol[ind].sol1=v[i1];
                psol[ind].sol2=v[i2];
                psol[ind].sol3=v[i3];
                psol[ind].sum=psol[ind].sol1+psol[ind].sol2+psol[ind].sol3;
            }
        }
    }

    sort(psol,psol+ind+1,cmp_s);
    int st=0;
    int sf=ind;
    while(st<=sf)
    {
        int x=psol[st].sum+psol[sf].sum;
        if(sum==x)
        {
            sol1=st;
            sol2=sf;
            break;
        }
        else if(sum<x)
        {
            --sf;
        }
        else
        {
            ++st;
        }
    }

    if(sol1==-1)
    {
        fout<<"-1";
    }
    else
    {
        fout<<psol[sol1].sol1<<" "<<psol[sol1].sol2<<" "<<psol[sol1].sol3<<" ";
        fout<<psol[sol2].sol1<<" "<<psol[sol2].sol2<<" "<<psol[sol2].sol3;
    }
    fout.close();
    return 0;
}