Pagini recente » Cod sursa (job #1178219) | Cod sursa (job #2742052) | Cod sursa (job #2806575) | Cod sursa (job #2836184) | Cod sursa (job #3031676)
#include <fstream>
#include <utility>
#include <vector>
using namespace std;
ifstream cin ("secv2.in");
ofstream cout ("secv2.out");
vector < pair < int , int> > maxime;
vector <int> sir;
int main ()
{
int lungime_sir , lungime_minima;
cin >> lungime_sir >> lungime_minima;
sir.resize(lungime_sir + 1) , maxime.resize(lungime_sir + 1);
for (int indice = 1 ; indice <= lungime_sir ; indice++)
cin >> sir[indice] , sir[indice] += sir[indice - 1];
maxime[lungime_sir].first = sir[lungime_sir] , maxime[lungime_sir].second = lungime_sir;
for (int indice = lungime_sir - 1 ; indice ; indice--)
if (sir[indice] > maxime[indice + 1].first)
maxime[indice].first = sir[indice] , maxime[indice].second = indice;
else
maxime[indice].first = maxime[indice + 1].first , maxime[indice].second = maxime[indice + 1].second;
int suma_maxima = maxime[lungime_minima].first , start = 1 , stop = maxime[lungime_minima].second;
for (int indice = lungime_minima + 1 ; indice <= lungime_sir ; indice++)
if (maxime[indice].first - sir[indice - lungime_minima] > suma_maxima)
suma_maxima = maxime[indice].first - sir[indice - lungime_minima] , start = indice - lungime_minima + 1 , stop = maxime[indice].second;
cout << start << ' ' << stop << ' ' << suma_maxima;
cout.close(); cin.close();
return 0;
}