Cod sursa(job #849182)

Utilizator danutbodbodnariuc danut danutbod Data 6 ianuarie 2013 18:05:47
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include<algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int a[103],c[1000003],i,j,n,s,p,q,m,k,sol;
bool CautaBin(int x){
int st=1,dr=m,mij;
while(st<=dr){
    mij=(st+dr)/2;
    if(x==c[mij])return true;
      else
          if(x<c[mij])dr=mij-1;
             else st=mij+1;
}
return false;
}
void cauta(int x){
int i,j,k;
for (i=1; i<=n; i++)
      for (j=1; j<=n; j++)
          for (k=1; k<=n; k++)
             if(sol==a[i]+a[j]+a[k]){g<<a[i]<<" "<<a[j]<<" "<<a[k]<<" ";return;}
}
int main()
{
    f>>n>>s;
    for (i=1; i<=n; i++)f>>a[i];
    for (i=1; i<=n; i++)
      for (j=i; j<=n; j++)
          for (k=j; k<=n; k++)
             c[++m]=a[i]+a[j]+a[k];
    sort(c+1,c+m+1);
    for (i=1; i<=m; i++)
       if(CautaBin(s-c[i])){sol=c[i];break;}
    if(sol==0)g<<-1;
    else  cauta(sol);cauta(s-sol);
    g<<'\n';
return 0;
}