Pagini recente » Cod sursa (job #1167869) | Cod sursa (job #1442987) | Cod sursa (job #354846) | Cod sursa (job #1202273) | Cod sursa (job #1044979)
#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;
}