Pagini recente » Cod sursa (job #1469876) | Cod sursa (job #732051) | Cod sursa (job #27045) | Cod sursa (job #2023361) | Cod sursa (job #460799)
Cod sursa(job #460799)
#include <stdio.h>
FILE*f=fopen("grupuri.in ", "r");
FILE*g=fopen("grupuri.out", "w");
int a[100005],n,i,k,s,lc,kc,m,u,p;
char ok ;
int main () {
fscanf ( f, "%d %d ", &k ,&n);
for ( i = 1 ; i <= n ; ++i ){
fscanf (f , "%d", &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
lc = 0 ; kc = 0 ;
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;
if ( ok == 1){
//se pot forma
p = m + 1 ;
}
else
u = m - 1 ;
}
fprintf ( g, "%d", u );
fclose(f);
fclose(g);
return 0;
}