Pagini recente » Cod sursa (job #2386546) | Cod sursa (job #2476691) | Cod sursa (job #739660) | Cod sursa (job #408848) | Cod sursa (job #1452625)
#include <iostream>
#include <stdio.h>
using namespace std;
int v[100001];
int v2[100001];
bool grupuri(int mij, int n, int k)
{
for(int i=1; i<=n; i++)
v2[i]=v[i];
int r=0, i;
while(k>0 && r==0){
r=mij;
i=1;
while(r>0 && i<=n){
if(v2[i]>0){
v2[i]--;
r--;
}
i++;
}
if(r<=0)
k--;
}
if(k<=0)
return true;
return false;
}
int main()
{
FILE *fin=fopen("grupuri.in", "r");
FILE *fout=fopen("grupuri.out", "w");
int k, n, st, dr, mij, gr;
fscanf(fin, "%d%d", &k, &n);
dr=0;
for(int i=1; i<=n; i++){
fscanf(fin, "%d", &v[i]);
dr+=v[i];
}
for(int i=1; i<=n; i++)
for(int j=1; j<n; j++){
if(v[j]<v[j+1]){
v[j]=v[j]+v[j+1];
v[j+1]=v[j]-v[j+1];
v[j]=v[j]-v[j+1];
}
}
st=1;
while(st<dr){
mij=(st+dr)/2;
if(grupuri(mij, n, k)){
gr=mij;
st=mij+1;
}
else{
dr=mij-1;
}
}
fprintf(fout, "%d", gr);
return 0;
}