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