Pagini recente » Cod sursa (job #1886156) | Cod sursa (job #1383727) | Cod sursa (job #1473962) | Cod sursa (job #40498) | Cod sursa (job #461995)
Cod sursa(job #461995)
#include <stdio.h>
FILE*f=fopen("grupuri.in", "r");
FILE*g=fopen("grupuri.out", "w");
long long i,s,lc,kc,m,u,p,nr,aux;
long long sum[100005],max;
char ok ;
int k,n,a[100005];
int main () {
fscanf ( f, "%d %d ", &k ,&n);
for ( i = 1 ; i <= n ; ++i ){
fscanf (f , "%d", &a[i]);
sum[i] = sum[i-1] + a[i] ;
s += a[i] ;
}
p = 1; u = s / k ;
while ( p <= u ) {
ok = 0 ;
m = p + (u - p) / 2;
// m linii si k coloane
/*for ( i = 1; i <= n ; ++i ){
if ( a[i] >= m ) {
//lc = lc - 1 ;
kc ++ ;
}
else{
if ( ( lc + a[i] ) % m != lc + a[i] )
kc ++ ;
lc = ( lc + a[i] ) % m ;
}
}
if ( kc >= k || (kc == k && lc == m) )
ok = 1;
*/
nr = m * k ;
i = n ;
while ( a[i] >= k )
nr -= m, --i;
if( nr <= sum[i] ){
ok = 1 ;
if( m > max )
max = m ;
}
if ( ok == 1){
//se pot forma
p = m + 1 ;
}
else
u = m - 1 ;
}
fprintf ( g, "%lld\n", max );
fclose(f);
fclose(g);
return 0;
}