Cod sursa(job #1258618)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 9 noiembrie 2014 01:43:02
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");
struct comb{
    int x,y,z;
    int sum;
}a[100*100*100+1];
long long n,v[112],i,j,s,d,k,x,st,dr,m,b[7],y;
int cmp( const comb a, const comb b){
    if(a.sum < b.sum)
        return 1;
return 0;
}
int main(){

    fin>>n>>s;
    for(i=1;i<=n;i++)
        fin>>v[i];
    sort(v+1,v+n+1);
    for(i=1;i<=n;i++){
        for(j=i;j<=n;j++){
            for(d=j;d<=n;d++)
            {
                a[++k].x=i;
                a[k].y=j;
                a[k].z=d;
                a[k].sum=v[i]+v[j]+v[d];
            }
        }
    }
    sort(a+1,a+k+1,cmp);
    for(i=k;i>=1;i--){
            y=s-a[i].sum;
            st=1;dr=k;
            while(st<=dr){
                m=(st+dr)/2;
            if(a[m].sum==y){
                fout<<a[m].x<<" ";
                fout<<a[m].y<<" ";
                fout<<a[m].z<<" ";
                fout<<a[i].x<<" ";
                fout<<a[i].y<<" ";
                fout<<a[i].z<<" ";
                return 0;
            }
            if(a[m].sum<y)
                st=m+1;
            else
                dr=m-1;
            }
    }
    fout<<-1;
    fin.close();fout.close();
    return 0;
}