Cod sursa(job #1603825)
Utilizator | Bouruc Petru Liviu BourucLiviu | Data | 17 februarie 2016 19:38:11 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.65 kb |
#include <fstream>
using namespace std;
ifstream fin ("ssm.in");
ofstream fout("ssm.out");
int sum[6000001];
int main()
{
int n, Min = 0, bestSum = -int(2e9), aux, pozMin, pozMax;
fin >> n;
for(int i = 1; i <= n; ++i) fin >> sum[i];
for(int i = 1; i <= n; ++i)
{
sum[i] += sum[i - 1];
if(Min > sum[i])
{
Min = sum[i];
aux = i;
}
if(bestSum < sum[i] - Min)
{
bestSum = sum[i] - Min;
pozMin = aux + 1;
pozMax = i;
}
}
fout << bestSum << " " << pozMin << " " << pozMax;
return 0;
}