Cod sursa(job #2029550)

Utilizator modulopaulModulopaul modulopaul Data 30 septembrie 2017 11:33:11
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <cstdio>
#include <iostream>

using namespace std;
FILE *fin=fopen("ssm.in","r"),*fout=fopen("ssm.out","w");
int main(){
    int n,v[60000]={0},x,max,min,pozmax,pozmin;
    fscanf(fin,"%d",&n);
    fscanf(fin,"%d",&x);
    v[0]=x;
    min=max=x;
    pozmax=pozmin=0;
    for(int i=1;i<n;i++){
        fscanf(fin,"%d",&x);
        v[i]=v[i-1]+x;
        if(max<v[i]){
            max=v[i];
            pozmax=i;
        }
        if(min>v[i]){
            min=v[i];
            pozmin=v[i];
        }
    }
    if(min>0){
        fprintf(fout,"%d %d %d",max,pozmax,pozmax);
    }
    else{
        int max2,pozmax2;
        max2=min; pozmax2=pozmin;
        for(int i=pozmin;i<n;i++){
            if(max2<v[i]){
                max2=v[i];
                pozmax2=i;
            }
        }
        int min2=max,pozmin2=pozmax;
        for(int i=pozmax;i>=0;i--){
            if(min2>v[i]){
                min2=v[i];
                pozmin2=i;
            }
        }
        if(max2-min>max-min2){
            fprintf(fout,"%d %d %d",max2-min,pozmin+2,pozmax2+1);
        }
        else{
            fprintf(fout,"%d %d %d",max-min2,pozmin2+2,pozmax+1);

        }
    }
    return 0;
}