Cod sursa(job #2198996)

Utilizator AndaionicaIonica Anda Maria Andaionica Data 26 aprilie 2018 07:49:07
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,s,v[101],i,j,k,nr,sol;
struct loto{
    int val,a,b,c;
}sum[1000001];
int cmp(loto x,loto y){
    return x.val<y.val;
}
void cautare(int x,int st,int dr){
    int mij;
    while(st<=dr){
        mij=(st+dr)/2;
        if(sum[mij].val==x){
            sol=mij;
            break;
        }
        if(sum[mij].val<x)
            st=mij+1;
            else
                dr=mij-1;
    }
}
int main()
{
    f>>n>>s;
    for(i=1;i<=n;i++)
        f>>v[i];
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
            for(k=j;k<=n;k++){
                nr++;
                sum[nr].val=v[i]+v[j]+v[k];
                sum[nr].a=v[i];
                sum[nr].b=v[j];
                sum[nr].c=v[k];
            }
    sort(sum+1,sum+nr+1,cmp);
    sol=-1;
    for(i=1;i<=nr&&sum[i].val<=s/2;i++){
        cautare(s-sum[i].val,i,nr);
        if(sol!=-1){
            g<<sum[i].a<<" "<<sum[i].b<<" "<<sum[i].c<<" "<<sum[sol].a<<" "<<sum[sol].b<<" "<<sum[sol].c;
            return 0;
        }
    }
    g<<sol;
    return 0;
}