Cod sursa(job #1971653)
| Utilizator | Data | 20 aprilie 2017 19:30:52 | |
|---|---|---|---|
| Problema | Transport | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.84 kb |
#include <fstream>
using namespace std;
int N,K,i,Sum,St,Dr,Mij,A[16001],j,S,Nr,Rez;
int main()
{
ifstream fin("transport.in");
ofstream fout("transport.out");
fin>>N>>K;
Sum=0;
for(i=1;i<=N;i++)
{
fin>>A[i];
Sum+=A[i];
}//for i
St=1;
Dr=Sum;
while(St<=Dr)
{
Mij=(St+Dr)/2;
i=1;
Nr=0;
while(i<=N)
{
S=0;
j=i;
Nr++;
while(j<=N and S+A[j]<=Mij)
{
S+=A[j];
j++;
}//while
i=j;
}//while
if(Nr<=K)
{
Dr=Mij-1;
Rez=Mij;
}
else
St=Mij+1;
}//while
fout<<Rez;
fin.close ();
fout.close();
return 0;
}
