Cod sursa(job #1140949)

Utilizator classiusCobuz Andrei classius Data 12 martie 2014 13:27:18
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
//#include <iostream>
#include<fstream>
#include<vector>
#include<algorithm>
#include<cmath>

using namespace std;

ifstream cin("loto.in");
ofstream cout("loto.out");

int i,j,k,n,s,v[101],x;

struct conf{
    int sum;
    int a,b,c;
};

conf c[1000000];

bool cmp(conf x, conf y){
    return (x.sum<y.sum);
}

int main(){
    cin>>n>>s;

    for(i=1;i<=n;i++){
        cin>>v[i];
    }

    int nr=0;

    c[0].sum=-1000000000;

    for(i=1;i<=n;i++){
        for(j=i;j<=n;j++){
            for(k=j;k<=n;k++){
                nr++;
                c[nr].sum=v[i]+v[j]+v[k];
                c[nr].a=v[i];
                c[nr].b=v[j];
                c[nr].c=v[k];
            }
        }
    }

    nr++;
    c[nr].sum=1000000000;

    sort(c,c+nr+1,cmp);
    for(i=0;i<=nr;i++){
        int st=0;
        int dr=nr;
        while(st<dr){
            int mid=(st+dr)/2;
            if(c[i].sum+c[mid].sum<s){
                st=mid+1;
            }else{
                dr=mid;
            }
        }
        if(c[i].sum+c[st].sum==s){
            cout<<c[i].a<<" "<<c[i].b<<" "<<c[i].c<<" "<<c[st].a<<" "<<c[st].b<<" "<<c[st].c;
            return 0;
        }
    }

    cout<<-1;

    return 0;
}