Pagini recente » Cod sursa (job #1725186) | Cod sursa (job #1768854) | Cod sursa (job #1149715) | Cod sursa (job #1458795) | Cod sursa (job #1028119)
#include <cstdio>
int v[100001], n, k;
bool sepoate( long long mijl, long long save ) {
long long csave = save;
for(int i = 0 ; i < k ; ++i )
if( v[i] < mijl ) {
csave -= ( mijl - v[i] );
if( csave < 0 )
return false;
}
return true;
}
long long cauta( int start, long long stop, long long save ) {
long long mijl = ( start + stop ) / 2;
if( start == stop || start == stop - 1 ) {
if( sepoate( stop, save ) == true )
return stop;
return start;
}
if( sepoate( mijl, save ) )
return cauta( mijl, stop, save );
return cauta( start, mijl, save );
}
int main () {
FILE *f, *g;
f = fopen( "grupuri.in", "r" );
g = fopen( "grupuri.out", "w" );
long long suma = 0, save = 0;
fscanf( f, "%d%d", &k, &n );
for( int i = n - 1 ; i >= 0 ; --i ) {
fscanf( f, "%d", &v[i] );
suma += v[i];
if( i >= k )
save += v[i];
}
fprintf( g, "%lld\n", cauta( 0, suma / k + 1, save ) );
fclose( f );
fclose( g );
return 0;
}