Cod sursa(job #1028710)

Utilizator hevelebalazshevele balazs hevelebalazs Data 14 noiembrie 2013 16:41:24
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <stdlib.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define N 100
#define M 350000
struct nr{int v;int m;};
int c(const void*a,const void*b){return (*(nr*)a).v-(*(nr*)b).v;}
int a[N];
int d[6];
nr b[M];
int main(){
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int n,s,l=-1;
    scanf("%i%i",&n,&s);
    fr(i,0,n)scanf("%i",a+i);
    fr(i,0,n)fr(j,i,n)fr(k,j,n){b[++l].v=a[i]+a[j]+a[k];b[l].m=i*n+j;}
    ++l;
    qsort(b,l,sizeof(nr),c);
    int i=0,j=l-1;
    while(i<=j){
        if(b[i].v+b[j].v==s){
            d[0]=a[b[i].m%n];
            d[1]=a[b[i].m/n];
            d[2]=b[i].v-d[0]-d[1];
            d[3]=a[b[j].m%n];
            d[4]=a[b[j].m/n];
            d[5]=b[j].v-d[3]-d[4];
            fr(i,0,6)printf("%i ",d[i]);
            return 0;
            }
        b[i].v+b[j].v>s?--j:++i;
        }
    printf("-1");
    return 0;
    }