Cod sursa(job #1044979)

Utilizator rcalitaCalita Raluca rcalita Data 30 noiembrie 2013 18:21:26
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");
int main()
{
    int saltele[16000];
    int max_drumuri, nr_saltele, i, total = 0, rezultat, drumuri_curente, incarcatura_curenta, tmp;
    in>>nr_saltele>>max_drumuri;
    for(i = 0; i< nr_saltele; i++)
    {
        in>>saltele[i];
        total += saltele[i];
    }

    rezultat = total / max_drumuri;
    inceput:
    incarcatura_curenta = 0;
    drumuri_curente = 0;
    for(i = 0; i< nr_saltele; i++)
    {
        if(rezultat < saltele[i])
        {
            rezultat = saltele[i];
            goto inceput;
        }
        incarcatura_curenta+= saltele[i];
        if(incarcatura_curenta >= rezultat)
        {
			if(incarcatura_curenta > rezultat)
				incarcatura_curenta = saltele[i];
			else 
				incarcatura_curenta = 0;
            drumuri_curente++;
        }
		
		if(i == nr_saltele -1)
			if(incarcatura_curenta > 0)
				drumuri_curente++;
        if(drumuri_curente > max_drumuri)
        {
            rezultat++;
           // goto inceput;
        }
    }
	tmp = rezultat-1;
	incarcatura_curenta = 0;
    drumuri_curente = 0;
    for(i = 0; i< nr_saltele; i++)
    {

        incarcatura_curenta+= saltele[i];
        if(incarcatura_curenta >= tmp)
        {
			if(incarcatura_curenta > tmp)
				incarcatura_curenta = saltele[i];
			else 
				incarcatura_curenta = 0;
            drumuri_curente++;
        }
		
		if(i == nr_saltele -1)
			if(incarcatura_curenta > 0)
				drumuri_curente++;
    }
	if(drumuri_curente == max_drumuri)
		rezultat--;
    out<<rezultat;
    return 0;
}