Cod sursa(job #490194)

Utilizator S7012MYPetru Trimbitas S7012MY Data 5 octombrie 2010 14:47:20
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
/*
 * File:   main.cpp
 * Author: petru
 *
 * Created on 2010-10-05
 */


#include <cstdio>
#define deb(n) fprintf(stderr,"%d ",(n));
#define DN 100010
#define LL long long
int k,n,cant[DN];
LL s;

bool ver(int nr) {
    LL prod=(LL)nr*k;
    for(int i=0; i<n; ++i) {
        if(cant[i]<nr) prod-=(LL)cant[i];
        else prod-=(LL)nr;
        if(prod<=0) return true;
    }
    return false;
}

int cb() {
    int ls=0, ld=(int)(s/(LL)k), mij,rez=0;
    while (ls<=ld) {
        mij=(ls+ld)/2;
        if(ver(mij)) {
            rez=mij;
            ls=mij+1;
        }
        else ld=mij-1;
    }
    return rez;
}

int main()
{
	int i;
	freopen("grupuri.in","r",stdin);
	freopen("grupuri.out","w",stdout);
	scanf("%d %d",&k,&n);
	for(i=0; i<n; ++i) { scanf("%d",&cant[i]); s+=(LL)cant[i];}
	printf("%d\n",cb());
	return 0;
}