Cod sursa(job #3308622)

Utilizator andreic06Andrei Calota andreic06 Data 26 august 2025 17:58:19
Problema Subsecventa de suma maxima Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;
using int64 = long long;
const int N_MAX = 6e6;

int N; int64 v[1 + N_MAX];

struct seq {
    int64 sum;
    int left;
} dp[1 + N_MAX];

ifstream fin ("ssm.in");
ofstream fout ("ssm.out");

int main()
{
   fin >> N;
   for (int i = 1; i <= N; i ++) fin >> v[i];

   dp[0] = {0, 0};
   for (int i = 1; i <= N; i ++) {
      if (dp[i - 1].sum < 0)
        dp[i] = {v[i], i};
      else
        dp[i] = {dp[i - 1].sum + v[i], dp[i - 1].left};
   }

   int64 answer = 0; int right;
   for (int i = 1; i <= N; i ++) {
      if (dp[i].sum > answer) {
        answer = dp[i].sum;
        right = i;
      }
      else if (dp[i].sum == answer && dp[i].left < dp[right].left)
        right = i;
   }
   fout << answer << " " << dp[right].left << " " << right << "\n";

    return 0;
}