Cod sursa(job #1946796)

Utilizator GhitaVicyorVictor Ghita GhitaVicyor Data 30 martie 2017 14:59:00
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    FILE *fin,*fout;
    fin=fopen("ssm.in","r");
    fout=fopen("ssm.out","w");
    int s,smax,cs,cd,n,i,csf,cdf,a,maxi,poz,contor;
    fscanf(fin,"%d",&n);
    s=smax=0;
    cs=cd=1;
    csf=cdf=1;
    contor=0;
    maxi=-9000000;
    for (i=1;i<=n;i++)
    {
        fscanf(fin,"%d",&a);
        if (maxi<a){
            maxi=a;
            poz=i;
        }
        if (a<0)
            contor++;
        s+=a;
        if (s<0){
            cs=i+1;
            s=0;
        }
        if (s>=smax)
        {
            smax=s;
            cd=i;
            cdf=cd;
            csf=cs;
        }
        if (s==smax)
            if (cdf-csf>cd-cs)
            {
                cdf=cd;
                csf=cs;
            }
    }
    if (contor==n)
        fprintf(fout,"%d %d %d",maxi,poz,poz);
    else
        fprintf(fout,"%d %d %d",smax,csf,cdf);
    return 0;
}