Cod sursa(job #2493379)

Utilizator NeacsuMihaiNeacsu Mihai NeacsuMihai Data 16 noiembrie 2019 11:54:22
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int v[16002];

int main()
{
    ifstream fin ("transport.in");
    ofstream fout ("transport.out");

    int n, k, i, aux, aux2, max1, p, u, mij, cp;
    bool ok;

    fin>>n>>k;

    for(i=1; i<=n; i++)
    {
        fin>>v[i];
        v[i] = v[i] + v[i-1];
    }

    v[n+1]= v[n] + 16001;

    aux=v[n]/k;
    aux2=0;
    max1=0;




    for(i=1; i<=k; i++)
    {
        p=1;
        u=n;
        ok=0;

        while(p<=u && ok==0)
        {
            mij=(p+u)/2;

            if(v[mij]<=aux && v[mij+1] > aux) ok=1;
            else if(v[mij] > aux) u=mij-1;
            else if(v[mij+1] <=aux) p=mij+1;
        }

        if(abs(v[mij]- aux) < abs(v[mij+1]-aux) ) cp=mij;
        else cp=mij+1;

        if(v[cp] - v[aux2] > max1) max1=v[cp] - v[aux2];

        aux= aux + v[n]/ k;
        aux2=cp;
    }

    fout<<max1;

}