Cod sursa(job #1019931)

Utilizator Catalina_BrinzaBrinza Catalina Catalina_Brinza Data 1 noiembrie 2013 11:36:10
Problema Loto Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <iostream>
#include <fstream>
using namespace std;
struct sume
{
    int s,b,c;
};
    struct sume v[325000];
void quicksort(sume *v,int f,int n)
{
    int p,j,i;
    sume aux;
    if(f<n)
    {
        p=f;
        i=f;
        j=n;
        
        while(i<j)
        {
            while(v[i].s<=v[p].s &&i<n)
                i++;
            while(v[j].s > v[p].s)
                j--;
            if(i<j){
                aux=v[i];
                v[i]=v[j];
                v[j]=aux;
            }
        }
        
        aux=v[p];
        v[p]=v[j];
        v[j]=aux;
        quicksort(v,f,j-1);
        quicksort(v,j+1,n);
        
    }
}



int main()
{int N,S,a[100],i;
    ifstream f("loto.in");
    ofstream g("loto.out");
    f>>N>>S;
    for (i=0;i<N;i++)
        f>>a[i];

    int m=0;
    int ok=0;
    for (i=0;i<N;i++)
        if (ok==0)
        for (int j=0;j<N;j++)
            if (ok==0)
                for (int k=0;k<N;k++)
                {if (a[i]+a[j]+a[k]<S)
                {
                    v[m].s=a[i]+a[j]+a[k];
                    v[m].b=a[i];
                    v[m].c=a[j];
                    m++;
                    
                }
    else if ((2*a[i]+2*a[j]+2*a[k])==S)
    {
        g<<a[i]<<' '<<a[i]<<' '<<a[j]<<' '<<a[j]<<' '<<a[k]<<' '<<a[k]<<endl;
        break;
        ok=1;
    }}
    quicksort(v,0,m-1);
    i=0; m--;
    while (ok==0 && i!=m)
    {
        if (v[i].s+v[m].s==S)
        {ok=1;
            g<<v[i].s-v[i].b-v[i].c<<' '<<v[i].b<<' '<<v[i].c<<' '<<v[m].s-v[m].b-v[m].c<<' '<<v[m].b<<' '<<v[m].c;}
        else if (v[i].s+v[m].s>S) m--;
            else i++;
    }
    if (ok==0) g<<-1;
    f.close();
    g.close();
    return 0;
}