Pagini recente » Istoria paginii runda/runda_ezoterica_4.5/clasament | Istoria paginii runda/rar25/clasament | Cod sursa (job #823779) | Cod sursa (job #1239459) | Cod sursa (job #2522259)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int N, v[6000001], partiale[6000001], i2, j2, suma1, suma2, negative;
int main() {
fin >> N;
for (int i = 1; i <= N; ++i)
fin >> v[i];
for (int i = 1; i <= N; ++i) {
suma1 += v[i];
if (v[i] < 0)
++negative;
}
partiale[1] = v[1];
for (int i = 2; i <= N; ++i)
partiale[i] = v[i] + partiale[i-1];
int maxim = -2147483640, minim = 2147483640;
for (int i = 1; i <= N; ++i) {
if (partiale[i] > maxim) {
maxim = partiale[i];
i2 = i;
}
if (partiale[i] < minim) {
minim = partiale[i];
j2 = i;
}
}
if (negative == N)
j2 = i2;
else if (v[j2] < 0)
++j2;
for (int j = j2; j <= i2; ++j)
suma2 += v[j];
if (suma2 > suma1)
fout << suma2 << " " << j2 << " " << i2;
else
fout << suma1 << " " << 1 << " " << N;
return 0;
}