Cod sursa(job #1077732)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 11 ianuarie 2014 16:55:19
Problema Grupuri Scor 66
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
int n,k,i,v[100001];
long long st,dr,maxm;
bool rezolv(int x)
{
    long long sum=0,prag;
    prag=x*k;
    for(i=n;i>=1&&sum<prag;i--)
        if(v[i]>=x)
          sum+=x;
        else
          sum+=v[i];
//   g<<x<<" "<<" "<<prag<<" "<<sum<<'\n';
   if(sum>=prag)
        return 1;
   return 0;
}
long long caut_bin()
{
    int m;
    st=1;dr=maxm;
    while(st<=dr)
      {
        m=(st+dr)/2; // 6 3 4
        if(!rezolv(m))
            dr=m-1;
        else
            st=m+1;
      }
   return st-1;
}
int main()
{
    f>>k>>n;
    for(i=1;i<=n;i++)
      {f>>v[i];maxm+=v[i];}
    g<<caut_bin();
    f.close();g.close();
    return 0;
}