Cod sursa(job #1619074)

Utilizator bob123bobelus bob bob123 Data 28 februarie 2016 12:08:12
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <cstdio>
using namespace std;

int i1,i2,im,Min,Max,n,i,a;
long long s;
int main()
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);
    scanf("%d", &n);
    Min=2000000000;Max=-100000000;
    for(i=1;i<=n;++i){
        scanf("%d", &a);
        s=s+a;
        if(s-Min>Max){
            Max=s-Min;
            i1=im+1;i2=i;
        }
        else if(s-Min==Max){
            if(im+1<i1){
                i2=i;i1=im+1;
                Max=s-Min;
            }
            else if(im+1==i1){
                if(i-im<i2-i1){
                    Max=s-Min;
                    i1=im+1;i2=i;
                }
            }
        }
        if(s>Max){
            Max=s;
            i1=1;i2=i;
        }
        else if(s==Max){
            if(1<i1){
                Max=s;
                i2=i;i1=1;
            }
            else if(1==i1){
                if(i-1<i2-i1){
                    Max=s;
                    i2=i;i1=1;
                }
            }
        }
        if(s<Min)
            Min=s,im=i;
    }
    printf("%d %d %d", Max,i1,i2);
    return 0;
}