Cod sursa(job #2683793)

Utilizator ililogIlinca ililog Data 12 decembrie 2020 09:57:28
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.89 kb
using namespace std;
#include<bits/stdc++.h>
#define LGMAX 1024

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

int n, v[6000001];
int st, dr, idx = 1, sumcurr, summax = INT_MIN;

int main() {
    
    fin >> n;
    for (int i = 1; i<=n; i++) {
        fin >> v[i];
        
        if (sumcurr < 0) {
            sumcurr = v[i];
            idx = i;
        } else {
            sumcurr += v[i];
            
            if (sumcurr > summax) {
                summax = sumcurr;
                st = idx;
                dr = i;
            } else if (sumcurr == summax) {
                
                if (idx < st) {
                    st = idx;
                    dr = i;
                } else if (idx == st) {
                    if (i-idx+1 < dr-st+1) {
                        dr = i;
                    }
                }
                
            }
        }
    }
    
    fout << summax << " " << st << " " << dr;
    
    
    /*
    fin >> n;
    for (int i = 1; i<=n; i++) {
        fin >> v[i];
        
        if (sumcurr < 0) {
            sumcurr = v[i];
            idx = i;
        } else {
            sumcurr += v[i];
            
            if (sumcurr > summax) {
                summax = sumcurr;
                st = idx;
                dr = i;
            } else if (sumcurr == summax) {
                
                if (idx < st) {
                    summax = sumcurr;
                    st = idx;
                    dr = i;
                } else if (idx == st) {
                    if (i-idx+1 < dr-st+1) {
                        summax = sumcurr;
                        st = idx;
                        dr = i;
                    }
                }   
            }
        }
    }
    
    fout << summax << " " << st << " " << dr;
    */
    fin.close();
    fout.close();

    return 0;
}