Cod sursa(job #921600)

Utilizator ionutz_cnnbIonutz cnnb ionutz_cnnb Data 21 martie 2013 09:25:56
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <cstdlib>
using namespace std;
struct lot {int v; int poz;};
int fc(const void *a, const void *b)
{
     return ((lot *)a)->v - ((lot *)b)->v;
}

int main()
{
    ifstream fi("loto.in"); ofstream fo("loto.out");
    int a[101],i,n,j,k,ind,S;
    lot t[100001];
    fi>>n>>S;
    for(i=0;i<n;i++) fi>>a[i];
    for(i=0,ind=0;i<n;i++) for(j=0;j<n;j++) for(k=0;k<n;k++)
    {
        t[ind].v=a[i]+a[j]+a[k]; t[ind++].poz=i+j*100+k*10000;
    }
    qsort(t,n*n*n,sizeof(lot),fc);
    for(i=1,ind=0;i<n*n*n;i++)
        if(t[i].v!=t[ind].v) t[++ind]=t[i];
    i=0;j=ind;k=0;
    while(i<=j)
    {
        if(t[i].v+t[j].v==S) {k=1; break;}
        if(t[i].v+t[j].v<S) i++; else j--;
    }
    if(k==0) fo<<-1<<"\n";
    else
    {
        fo<<a[t[i].poz/10000]<<" "<<a[(t[i].poz/100)%100]<<" "<<a[t[i].poz%100]<<" ";
        fo<<a[t[j].poz/10000]<<" "<<a[(t[j].poz/100)%100]<<" "<<a[t[j].poz%100]<<"\n";
    }
    return 0;
}