Mai intai trebuie sa te autentifici.
Cod sursa(job #2261946)
Utilizator | Data | 16 octombrie 2018 20:33:40 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.13 kb |
#include <fstream>
#define ci 300000000
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, a[16009];
long long c;
bool valid(long long j){
int w = 1;
long long loc = j;
bool mte = false;
for(int i = 1; i<=n; ++i){
if(a[i] <=loc){
loc-=a[i];
}
else{
++w;
if(w>k){
mte = true;
break;
}
loc = j;
--i;
}
}
if(mte == true) return false;
return true;
}
long long capacitate(long long l, long long r){
if(l >=r-7){
for(long long i = l; i<=r; ++i){
if(valid(i)) return i;
}
}
else{
long long mid = (l+r)/2;
if(valid(mid)) return capacitate(l, mid);
else return capacitate(mid+1, r);
}
}
int main()
{
fin>>n>>k;
for(int i = 1; i<=n; ++i) fin>>a[i];
fout<<capacitate(0,ci);
// for(int i = 1; i<=20; ++i){
// fout<<valid(i)<<'\n';
// }/
return 0;
}