Cod sursa(job #1066416)

Utilizator TibixbAndrei Tiberiu Tibixb Data 24 decembrie 2013 18:20:48
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include<fstream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int i, j, n, k, p, u, nr, ok, s, m, v[103];
struct cub{
    int s;
    int a;
    int b;
    int c;
};
cub t[1000003];
int cmp (cub a, cub b){
    return a.s<b.s;
}
FILE*fin=fopen("loto.in","r");
ofstream fout("loto.out");
int main(){
    fscanf(fin,"%d%d", &n, &s);
    for(i=1; i<=n; i++)
        fscanf(fin,"%d", &v[i]);
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            for(k=1; k<=n; k++){
                t[++nr].s=v[i]+v[j]+v[k];
                t[nr].a=v[i];
                t[nr].b=v[j];
                t[nr].c=v[k];
            }
    sort(t+1, t+nr+1, cmp);
    for(i=1; i<=nr && ok==0; i++){
        if(t[i].s<=s){
            p=i; u=nr;
            while(p<=u){
                m=p+(u-p)/2;
                if(t[m].s==s-t[i].s){
                    fout<<t[m].a<<" "<<t[m].b<<" "<<t[m].c<<" "<<t[i].a<<" "<<t[i].b<<" "<<t[i].c<<"\n";
                    ok=1;
                    break;
                }
                else{
                    if(t[m].s>s-t[i].s)
                        p=m+1;
                    else
                        u=m-1;
                }
            }
        }
        else{
            fout<<"-1"<<"\n";
            break;
        }
    }
    if(ok==0)
            fout<<"-1";
return 0;
}