Cod sursa(job #490190)

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


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

bool ver(int nr) {
    LL prod=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=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+=cant[i];}
	printf("%d",cb());
	return 0;
}