Cod sursa(job #3352619)
| Utilizator | Data | 29 aprilie 2026 14:39:43 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.71 kb |
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
bool valid(int k, int nr, int n, int v[])
{
int i=0;
while(i<n && nr>0)
{
int s=0;
while(i<n && s+v[i]<=k)
{
s=s+v[i];
i++;
}
nr--;
}
if(i==n)
return 1;
else
return 0;
}
int main()
{
int n, nr, st=0, dr=256000000, k, m, v[16001];
fin>>n>>nr;
for(int i=0; i<n; i++)
fin>>v[i];
while(st<=dr)
{
m=(st+dr)/2;
if(valid(m,nr,n,v)!=0)
dr=m-1;
else
st=m+1;
}
fout<<st;
return 0;
}
