Pagini recente » Cod sursa (job #2572314) | Cod sursa (job #1766072) | Cod sursa (job #2088879) | Cod sursa (job #2387145) | Cod sursa (job #2928344)
#include <fstream>
#include <limits.h>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
#define LEN 6000005
int S[LEN] = {0}, sp[LEN] = {0};
int main() {
int x = 0, n = 0, suma = 0, pozi = 0, pozj = 0, smax = INT_MIN, spmin = INT_MAX;
in >> n;
for (int i = 1; i <= n; i++) {
in >> S[i];
//Generam sumele partiale asociate sirului
x += S[i];
sp[i] = x;
}
//Pentru fiecare j din [1, n], caut cea mai mica suma partiala cu pozitia < j (daca am o astfel de sp, atunci am si o smax cadidat)
for (int j = 1; j <= n; j++) {
if (sp[j] < spmin) {
spmin = sp[j];
pozi = j + 1;
}
int suma = sp[j] - spmin;
if(suma > smax) {
smax = suma;
pozj = j;
}
}
out << smax << ' ' << pozi << ' ' << pozj;
in.close();
out.close();
}