Mai intai trebuie sa te autentifici.
Cod sursa(job #1185527)
| Utilizator | Data | 15 mai 2014 22:05:12 | |
|---|---|---|---|
| Problema | Transport | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.85 kb |
#include <cstdio>
using namespace std;
int v[16001];
int main()
{
FILE *fin, *fout;
fin=fopen("transport.in", "r");
fout=fopen("transport.out", "w");
int suma=0, n, i, l1, l2, k, sumap=0, ks, mij;
fscanf(fin, "%d%d", &n, &k);
for(i=1;i<=n;i++)
{
fscanf(fin, "%d", &v[i]);
suma=suma+v[i];
}
l1=1;
l2=suma;
while(l1<l2)
{
ks=0;
mij=(l1+l2)/2;
sumap=0;
for(i=1;i<=n;i++)
{
if(v[i]>mij)
{
ks=k+1;
}else if(sumap+v[i]>mij)
{
ks++;
sumap=v[i];
}
else sumap=sumap+v[i];
}
ks++;
if(ks>=k)
l1=mij+1;
else l2=mij-1;
}
fprintf(fout, "%d", mij);
return 0;
}
