Pagini recente » Borderou de evaluare (job #601528) | Cod sursa (job #2969375) | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #790627)
Cod sursa(job #790627)
#include <cstdio>
#define maxN 6000005
using namespace std;
FILE *f = fopen ("ssm.in","r");
FILE *g = fopen ("ssm.out","w");
int n, a[maxN], sum, begin, end;
void read()
{
fscanf (f, "%d", &n);
for (int i = 1; i <= n; i++)
fscanf (f, "%d", &a[i]);
}
void solve()
{
int currentSum, inc;
sum = currentSum = a[1];
begin = end = 1;
for (int i = 2; i <= n; i++) {
if (currentSum < 0) {
currentSum = a[i];
inc = i;
}
else
currentSum += a[i];
if (currentSum > sum) {
sum = currentSum;
begin = inc;
end = i;
}
}
}
int main()
{
read();
solve();
fprintf (g, "%d %d %d\n", sum, begin, end);
fclose(f);
fclose(g);
return 0;
}