Pagini recente » Cod sursa (job #9116) | Cod sursa (job #457403) | Cod sursa (job #755826) | Cod sursa (job #985677) | Cod sursa (job #942207)
Cod sursa(job #942207)
#include<iostream>
#include<stdlib.h> /* qsort */
#include <stdio.h> /* printf */
#include <math.h>
#include <queue>
#include <iomanip>
#include <string>
#define NMAX 100000
using namespace std;
long long int *best, *v;
long long int n, bestSum = 0;
int main()
{
FILE *f = fopen("ssm.in", "r");
FILE *g = fopen("ssm.out", "w");
fscanf(f, "%lld", &n);
v = new long long int [n];
best = new long long int [n];
for (int i=1; i<=n; i++)
{
fscanf(f, "%lld", &v[i]);
}
bestSum = v[1];
long int pozFinal;
for (int i = 1; i <= n; ++ i)
{
best[i] = v[i];
if (best[i] < best[i-1] + v[i])
best[i] = best[i-1] + v[i];
if (bestSum < best[i])
{
bestSum = best[i];
pozFinal = i;
}
}
long int pozInceput;
for (int j=pozFinal; best[j] - best[j-1] == v[j] ; j--)
{
pozInceput = j-1;
}
fprintf(g, "%lld %ld %ld", bestSum, pozInceput, pozFinal);
fclose(f);
fclose(g);
return 0;
}