Cod sursa(job #2816040)

Utilizator NIIN100Nistor Nichita NIIN100 Data 10 decembrie 2021 22:01:02
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
int s[16001];

using namespace std;

int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");
    int n,k,st1,st2,dr1,dr2,mijl1,mijl2,vmin,c,gasit;
    in>>n>>k;
    for(int i=1;i<=n;i++){
        in>>vmin;
        s[i]=s[i-1]+vmin;
    }
    st1=1;
    dr1=s[n];
    vmin=s[n];
    while(st1<=dr1){
        mijl1=(st1+dr1)/2;
        c=0;
        gasit=0;
        for(int i=1;i<=k and gasit!=-1;i++){
            st2=1;
            dr2=n;
            gasit=-1;
            while(st2<=dr2){
                mijl2=(st2+dr2)/2;
                if(s[mijl2]-c<=mijl1){
                    gasit=s[mijl2];
                    st2=mijl2+1;
                }
                else{
                    dr2=mijl2-1;
                }
            }
            if(gasit!=-1){
                c=gasit;
            }
            cout<<2;
        }
        if(gasit!=s[n]){
            st1=mijl1+1;
        }
        else{
            vmin=mijl1;
            dr1=mijl1-1;
        }
        cout<<1<<" "<<vmin<<" ";
    }
    out<<vmin;
    return 0;
}