Cod sursa(job #1053861)
Utilizator | Data | 12 decembrie 2013 23:29:44 | |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.22 kb |
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int main()
{
int n,k,s=0,ok=0,temp=0,temp3,sum=0,temp2;
fin>>n>>k;
int a[n];
for(int i=0;i<n;i++)
{
fin>>a[i];
if(s<a[i])
{
s=a[i];
}
sum+=a[i];
}
while(1)
{
temp3=1;
temp=(s+sum)/2;
temp2=0;
for(int i=0;i<n;i++)
{
if(temp2+a[i]<=temp)
{
temp2+=a[i];
}
else
{
temp2=0;
temp2+=a[i];
temp3++;
}
}
if(s>=sum)
{
break;
}
if(temp3>k)
{
s=temp+1;
}
else if(temp3<k)
{
sum=temp-1;
}
else
{
sum=temp;
ok=temp;
}
}
fout<<ok;
}