Cod sursa(job #1809879)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 19 noiembrie 2016 13:16:27
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include  <fstream>
#include <algorithm>
using namespace std;
int n,i,j,k,s,m,ok,v[105],q[10];
struct tri
{
    int a,b,c,d;
};
tri w[200005];
bool compara(tri A, tri B)
{
    return A.a<B.b;
}
int main()
{
    ifstream f("loto.in");
    ofstream g("loto.out");
    f>>n>>s;
    for(i=1; i<=n; i++)
        f>>v[i];
    for(i=1; i<=n; i++)
    for(j=i; j<=n; j++)
    for(k=j; k<=n; k++)
    {
        m++;
        w[m].a=v[i]+v[j]+v[k];
        w[m].b=i;
        w[m].c=j;
        w[m].d=k;
    }
    sort(w+1, w+m+1, compara);
    i=1;
    j=m;
    ok=1;
    while(i<j&&ok)
    {
        if(w[i].a+w[j].a>s) j--;
        else if(w[i].a+w[j].a<s) i++;
        else
        {
            if(w[i].b!=w[j].b&&w[i].b!=w[j].c&&w[i].b!=w[j].d)
            if(w[i].c!=w[j].b&&w[i].c!=w[j].c&&w[i].c!=w[j].d)
            if(w[i].d!=w[j].b&&w[i].d!=w[j].c&&w[i].d!=w[j].d)
            {
                ok=0;
                q[1]=w[i].b;
                q[2]=w[i].c;
                q[3]=w[i].d;
                q[4]=w[j].b;
                q[5]=w[j].c;
                q[6]=w[j].d;
                sort(q+1, q+7);
                g<<v[q[1]]<<" "<<v[q[2]]<<" "<<v[q[3]]<<" "<<v[q[4]]<<" "<<v[q[5]]<<" "<<v[q[6]]<<'\n';
            }
        }
    }
    if(ok) g<<"-1\n";
    f.close(); g.close();
    return 0;
}