Cod sursa(job #2298657)

Utilizator Arsene_DenisaArsene Denisa Arsene_Denisa Data 8 decembrie 2018 12:25:39
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include<stdio.h>

int v[16001];

using namespace std;

int main(){
    FILE *fin, *fout;
    int dr, st, mij, ct, cnt, s, cm, i, k, n, poz, max;

    fin=fopen("transport.in", "r");
    fout=fopen("transport.out", "w");
    fscanf( fin, "%d %d", &n, &k);
    max=0;
    for(i=1; i<=n; i++) {
        fscanf( fin, "%d", &v[i]);
        if(v[i]>max) {
            max=v[i];
        }
    }

    st=1;
    dr=max*n;

    while(st<=dr) {
        mij=(st+dr)/2;
        cm=mij;
        cnt=0;
        for(i=1; i<=k; i++) {
            s=0;
            st=1;
            if(cnt<n) {
                while(st==1 && cnt<n) {
                    cnt++;
                    s=s+v[cnt];
                    if(s>cm) {
                        s=s-v[cnt];
                        cnt--;
                        st=0;
                    }
                }
            }
        }
            if(cnt==n) {
                poz=mij;
                dr=mij-1;
            }
            else {
                st=mij+1;
            }
        }
        fprintf( fout, "%d", poz);
            fclose( fin );
            fclose( fout );
            return 0;
        }