Cod sursa(job #1495880)

Utilizator Andrei_PopaAndreiCDG Andrei_Popa Data 3 octombrie 2015 20:01:24
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

int Saltele[16001];
int Sume[16001];
int Valoare[16001];
int max1;
int linf,lsup;
int N,K;
void calcMaxim(int g)
{
    if(g>max1)
    max1=g;
}
void cautBin()
{
    int mij=(linf+lsup)/2;
    int i;

    int t=Sume[mij]-Sume[linf];
    for(i=1;i<=mij;i++)
    Valoare[i]=t;
    calcMaxim(t);

    t=Sume[lsup]-Sume[mij];
    for(i=mij+1;i<=N;i++)
    Valoare[i]=t;
    calcMaxim(t);
}
int main()
{
    f>>N>>K;
    int i;
    for(i=1;i<=N;i++)
    {
        f>>Saltele[i];
        Sume[i]=Sume[i-1]+Saltele[i];
    }

    linf=1;
    lsup=N;
    if(K>1)
    {

    cautBin();
    for(i=1;i<K-1;i++)
    {
        int j=1;
        while(Valoare[j]!=max1)
        j++;

        linf=j;

        while(Valoare[j]==max1 && j<=N)
        j++;

        lsup=j-1;



        cautBin();
    }

    g<<max1;
    }

    f.close();
    g.close();
    return 0;
}