Cod sursa(job #713384)

Utilizator mihai96alexOprea Mihai Alexandru mihai96alex Data 14 martie 2012 16:32:46
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include<fstream>
using namespace std;
int v[20005],ci[20005],cj[20005],ck[20005];
void qsort(int st, int dr)
{
    int min,max,mij,aux;
    min=st;
    max=dr;
    mij=v[st+(dr-st)/2];
    do
    {
    while(v[min]<mij) min++;
    while(v[max]>mij) max--;
    if(min<=max)
    {
                aux=v[min];
                v[min++]=v[max];
                v[max--]=aux;
                min--;max++;
                
                aux=ci[min];
                ci[min++]=ci[max];
                ci[max--]=aux;
                min--;max++;
                
                aux=cj[min];
                cj[min++]=cj[max];
                cj[max--]=aux;
                min--;max++;
                
                aux=ck[min];
                ck[min++]=ck[max];
                ck[max--]=aux;
    }
    }while(min<=max);
    if(st<max) qsort(st,max);
    if(min<dr) qsort(min,dr);
}


int main()
{
    int N,S,a[105],i,j,k,p=0,t,f;
    ifstream fin("loto.in");
    ofstream fout("loto.out");
    fin>>N>>S;
    for(i=1;i<=N;i++)
    fin>>a[i];
    for(i=1;i<=N;i++)
    for(j=1;j<=N;j++)
    for(k=1;k<=N;k++)
    {v[++p]=a[i]+a[j]+a[k];
    ci[p]=a[i];cj[p]=a[j];ck[p]=a[k];}
    qsort(1,p);
    for(i=1;i<=p;i++)
    {
    
    t=S-v[i];
    for(f=1;f<=p;f++)
    if(v[i]+v[f]==S)
        {fout<<ci[i]<<" "<<cj[i]<<" "<<ck[i]<<" "<<ci[f]<<" "<<cj[f]<<" "<<ck[f];
        return 0;}
    }
    fout<<-1;
    return 0;    
}