Pagini recente » Cod sursa (job #168548) | Cod sursa (job #377232) | Cod sursa (job #2308056) | Cod sursa (job #1544872) | Cod sursa (job #1105468)
#include <fstream>
using namespace std;
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
typedef long long i64;
const int nmax= 100000;
i64 v[nmax+1];
bool check( i64 x, i64 n, i64 k ) {
i64 s= 0;
for ( i64 i= n; i>=1; --i ) {
i64 min= x;
if ( v[i]<min ) {
min= v[i];
}
s+= min;
}
if ( s>=k*x ) {
return 1;
} else {
return 0;
}
}
int main( ) {
i64 n, k, sum= 0, n2, sol= 0;
fin>>k>>n;
for ( i64 i= 1; i<=n; ++i ) {
fin>>v[i];
sum+= v[i];
}
sum/= k;
for ( n2= 1; n2<sum; n2*= 2 ) ;
for ( i64 step= n2; step>0; step/= 2 ) {
if ( sol+step<=sum && check( sol+step, n, k ) ) {
sol+= step;
}
}
fout<<sol<<"\n";
return 0;
}