Pagini recente » Borderou de evaluare (job #967591) | Cod sursa (job #2312669) | Cod sursa (job #455388) | Cod sursa (job #333127) | Cod sursa (job #3235292)
#include <iostream>
#include <fstream>
#define N_max 30005
using namespace std;
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
int len, n;
int nr[N_max];
int nr_max;
void reading(){
fin >> len >> n;
for(int i = 1; i <= n; i++){ fin >> nr[i]; nr_max += nr[i];}
}
bool is_good(int nr_grupe){
int S = 0;
for(int i = 1; i <= n && S < nr_grupe * len; i++){
S += min(nr[i], nr_grupe);
}
if(S >= nr_grupe * len) return 1;
return 0;
}
int main() {
reading();
int L = 0, R = nr_max / len;
int sol = 0;
while(L <= R){
int mij = (L + R) / 2;
if(is_good(mij)){
sol = mij;
L = mij + 1;
}else{
R = mij - 1;
}
}
fout << sol;
}