Pagini recente » Cod sursa (job #2839449) | Cod sursa (job #3272053) | Cod sursa (job #227175) | Cod sursa (job #2972178) | Cod sursa (job #2197396)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("ssm.in");
ofstream g ("ssm.out");
int n;
int sir[6000005];
void citire();
void afisare();
void rezolvare() {
int sumaMaxima = INT_MIN;
int start, stop;
int minim = 0;
int index = 0;
cout << sumaMaxima << "\n\n\n";
for (int i = 1; i <= n; ++i) {
/// Se formeaza vectorul de sume partiale peste
/// cel anterior existent, care era doar vector de valori
sir[i] += sir[i - 1];
/// Daca din elementul curent se scade valoarea minima obtinuta
/// pana acum prin cautarea in sir
if (sir[i] - minim > sumaMaxima) {
cout << i << ' ';
cout << sumaMaxima << ' ' << index << '\n';
sumaMaxima = sir[i] - minim;
start = index + 1;
stop = i;
} if (minim > sir[i]) {
minim = sir[i];
index = i;
}
// cout << i << ' ';
// cout << sumaMaxima << ' ' << index << '\n';
}
g << sumaMaxima << ' ';
g << start << ' ' << stop << '\n';
///afisare();
}
int main()
{
citire();
//afisare();
rezolvare();
return 0;
}
void citire() {
f >> n;
for (int i = 1; i <= n; ++i) {
f >> sir[i];
}
}
void afisare() {
for (int i = 1; i <= n; ++i) {
g << sir[i] << ' ';
}
}