Cod sursa(job #3268919)

Utilizator andrei_botorogeanuBotorogeanu Andrei andrei_botorogeanu Data 18 ianuarie 2025 08:47:43
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
// https://infoarena.ro/problema/ssm
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>

using namespace std;

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

void mss(int *p, int n, int &start, int &end, int &maxsum) {


     int currentSum = 0, 

         possibleStart = 0;

         maxsum = p[ 0 ];

         start = 0;

         end = -1;

         for(int i = 0; i < n; ++i) {

                   if(currentSum < 0) possibleStart = i;

                   currentSum = max(currentSum + p[i], p[ i ]);

                   if(currentSum > maxsum) {

                          maxsum = currentSum;

                          start = possibleStart;

                          end = i;
                   }
 
         }
}

int main(int argc, char const *argv[])
{

    int *v, 

         i, 

         n, 

         start, 

         end, 

         maxsum;

         cin>>n;

         v = new int[ n + 1 ];

         for(int i = 0; i < n; ++i) fin>>v[i];//based-0 index

         //variabile transmise prin referinta: start, end, maxsum
         mss(v, n, start, end, maxsum);

         fout<<maxsum<<" "<<start + 1<<" "<<end + 1;
}