Cod sursa(job #1304098)

Utilizator alinmocanu95FMI Alin Mocanu alinmocanu95 Data 28 decembrie 2014 17:30:09
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#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=t+a[i];
        if(a[i]>max) max=a[i];}

    i=1;
    c=max; //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=s+a[i];w=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=c+10; 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;
}