Cod sursa(job #2112089)

Utilizator Mihai7Gheoace Mihai Mihai7 Data 22 ianuarie 2018 23:25:51
Problema Subsecventa de suma maxima Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.26 kb
// C program to print largest contiguous array sum
#include<stdio.h>
#include<limits.h>

char buff[4096];
int pos= 4096;

char my_getch()
{
    if(pos==4096)
    {
        fread(buff,1,4096,stdin);
        pos=0;
    }
    return buff[pos++];
}
int nextNumber()
{
    char c=my_getch();int sign=0;
    while(c<'0' || c>'9')
        {
            if(c=='-')
                sign=1;
            c=my_getch();
        }
    int nr=0;
    while(c>='0' && c<='9')
        {nr=nr*10+c-'0';
        c=my_getch();
        }
    if(sign)
        nr*=-1;
    return nr;
}
 
void maxSubArraySum( int size)
{
    int max_so_far = INT_MIN, max_ending_here = 0,
       start =0, end = 0, s=0, i;
 
    for ( i=0; i< size; i++ )
    {
        max_ending_here += nextNumber();
 
        if (max_so_far < max_ending_here)
        {
            max_so_far = max_ending_here;
            start = s;
            end = i;
        }
 
        if (max_ending_here < 0)
        {
            max_ending_here = 0;
            s = i + 1;
        }
    }
    freopen("ssm.out","w",stdout);
    printf("%d %d %d" , max_so_far, start +1, end + 1);
}
 
/*Driver program to test maxSubArraySum*/
int main()
{
    freopen("ssm.in","r",stdin);
    
    int n;
    scanf("%d",&n);

     maxSubArraySum(n);
    return 0;
}