Mai intai trebuie sa te autentifici.
Cod sursa(job #1131932)
Utilizator | Data | 2 martie 2014 02:54:38 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 85 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.62 kb |
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;
int main()
{
int *v, *s, max, min, poz[2] = { 1, 1 }, n;
ifstream in("ssm.in");
ofstream out("ssm.out");
in >> n;
v = new int[n];
s = new int[n];
in >> v[0];
s[0] = v[0];
min = v[0];
max=min;
for (int i = 1; i < n; i++)
{
in >> v[i];
s[i] = s[i - 1] + v[i];
if (s[i] < min)
{
min = s[i];
poz[0] = i+1;
}
else
{
if (s[i] - min > max)
{
poz[1] = i;
max = s[i] - min;
}
}
}
out << max << " "<< poz[0] + 1 <<" "<< poz[1] + 1;
delete[] v;
delete[] s;
return 0;
}