Cod sursa(job #2802209)

Utilizator danutbodbodnariuc danut danutbod Data 17 noiembrie 2021 19:18:40
Problema Subsecventa de suma maxima Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
////O(n^2)
//
#include <fstream>
#define N 6000003
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
long long S[N], a[N],smax,s,p1,p2,i,j,k,n;
int main() {
    f>>n;
    for(i=1;i<=n;i++)f>>a[i];
    //precalculare sume S[i]=a[1]+a[2]+..+a[i]
    for(i=1;i<=n;i++)
      S[i]=S[i-1]+a[i];
    smax=-3000000000000000;
    for(i=1;i<=n;i++)  //toate sumele
     for(j=i;j<=n;j++)
       {
          //suma de la a[i] la a[j]
          s=S[j]-S[i-1];
          if(s>smax){smax=s;p1=i;p2=j;}
       }
    g<<smax<<" "<<p1<<" "<<p2;
    f.close();
    g.close();
    return 0;
}