Cod sursa(job #2274535)

Utilizator BovisioNitica Ionut Bogdan Bovisio Data 1 noiembrie 2018 23:50:44
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>

using namespace std;

int Sol(int v[],int n,int k,int point)
{
    int trans = 1,cap = point;
    for(int i=0;i<n;i++)
    {
        if(v[i] > cap)
        {
            cap = point;
            trans++;
        }
        cap -= v[i];
        if(trans > k)
            return -1;
    }
    if(trans == k)
        return point;
    return -1;
}

int main()
{
    int n,k,suma=0,maxim=-1,v[10000];
    FILE * f =fopen("transport.in","r");
    fscanf(f,"%i %i",&n,&k);
    for(int i=0;i<n;i++)
    {
        fscanf(f,"%i",&v[i]);
        suma += v[i];
        if(v[i] > maxim)
            maxim = v[i];
    }
    fclose(f);
    FILE * g = fopen("transport.out","w");
    for(int i=maxim;i<=suma;i++)
    {
        if(Sol(v,n,k,i) != -1)
        {
            fprintf(g,"%i",i);
            break;
        }
    }
    return 0;
}