Cod sursa(job #1280825)

Utilizator BLz0rDospra Cristian BLz0r Data 2 decembrie 2014 15:59:49
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>
using namespace std;

#define nmax 100002
#define lim 1000000000

FILE *f=fopen ("grupuri.in","r");
FILE *g=fopen ("grupuri.out","w");
 
int n,k,v[nmax];
 
bool sol (int t) {
    long long s=0;
 
    for (int i=1;i<=n;++i){
        if (v[i]>t) s+=1LL*t;
        else s+=1LL*v[i];
		
        if (s>=1LL*t*k) return 1;
    }
    return 0;
}
 
int bsearch (int st,int dr){
    int mid,s;
 
    while (st<=dr){
        mid=(st+dr)>>1;
        
		if(sol(mid)){
            s=mid;
            st=mid+1;
		}
        else dr=mid-1;
    }
    return s;
}
 
int main() {
 
    fscanf (f,"%d%d",&k,&n);
    for (int i=1;i<=n;++i) fscanf (f,"%d",&v[i]);
 
    fprintf (g,"%d",bsearch(0,lim));
    return 0;
}