Pagini recente » Cod sursa (job #1728390) | Cod sursa (job #628621) | Cod sursa (job #1264766) | Cod sursa (job #1156463) | Cod sursa (job #1023118)
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX_N 100000
#define LIMIT 100000000000
#define ll long long
int v[MAX_N];
void read( FILE *fin, int &k, int &n ) {
fscanf( fin, "%d%d", &k, &n );
for ( int i = 0; i < n; ++i )
fscanf( fin, "%d", &v[i] );
}
bool check( ll ans, int k, int n ) {
ll total = ( ll ) ans * k;
for ( int i = 0; total > 0 && i <= n; ++i )
total -= ( ll ) min( ( ll ) v[i], ans );
return ( total <= 0 );
}
ll binary_search( int n, int k ) {
ll i, pas = 1 << 30;
for ( i = 0; pas; pas >>= 1 )
if ( i + pas <= LIMIT && check( i + pas, n, k ) )
i += pas;
return i;
}
int main() {
FILE *fin, *fout;
fin = fopen( "grupuri.in", "r" );
int n, k;
read( fin, k, n );
fclose( fin );
fout = fopen( "grupuri.out", "w" );
fprintf( fout, "%lld\n", binary_search( k, n ) );
fclose( fout );
}