Pagini recente » Cod sursa (job #636689) | Cod sursa (job #2134346) | Cod sursa (job #2495074) | Cod sursa (job #1114577) | Cod sursa (job #1304292)
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
unsigned int n,k,t,p,i,c,s,a[20000],max=0;
int w;
f>>n>>k;
t=0; //total
p=k; //transporturi ramase
for(i=1;i<=n;i++)
{f>>a[i];t+=a[i];
if(a[i]>max) max=a[i];}
i=1;
c=t/2; //capacitatea ceruta
s=0; //adunarea volumelor adaugate
w=t; //total continuu
unsigned int u=1;
while(p>0) //mai sunt transporturi
{
if(w>0) //mai sunt saltele
if(s<c && s+a[i]<=c) //incape
{
s+=a[i];w-=a[i];i++; //adauga salteaua
}
else {p--; s=0;} //urmatorul transport
else p=0; // nu mai sunt saltele
if(p==0 && w<=0) //nu mai sunt transporturi si nici saltele
{u=0;c--;p=k; w=t;s=0; i=1;}
if(p==0 && w>0 && u==1)
{
c++; p=k; w=t;s=0; i=1;
}
if(p==0 && w>0 && u==0)
{c++; p=0;}
}
g<<c;
f.close();
g.close();
return 0;
}