Cod sursa(job #2908913)

Utilizator Shapka-NevedimkaSemenenco Stanislav Shapka-Nevedimka Data 6 iunie 2022 21:56:43
Problema Subsecventa de suma maxima Scor 0
Compilator c-32 Status done
Runda Arhiva educationala Marime 1 kb
/*
    Maximum Subsequence Sum Problem
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define  _CRT_SECURE_NO_WARNINGS

int max(int a, int b)
{
    return a>b?a:b;
}
void maxSubSum(int* arr, int* dp, int n)
{
    int i,maxSum,maxSum_index=0,temp;
    FILE* g;
    g = fopen("ssm.out", "wt");
    dp[0]=max(0,arr[0]);
    maxSum=dp[0];
    for(i=1;i<n;i++)
    {
        dp[i]=max(0,arr[i]+dp[i-1]);
        if (maxSum<dp[i])
        {
            maxSum = dp[i];
            maxSum_index = i;
        }
    }
    temp = maxSum_index;
    while (dp[temp] > 0)
    {
        temp--;
    }
    fprintf(g,"%d %d %d", maxSum,temp+2,maxSum_index+1);   
}
int main()
{
    int n,i;
    int *arr,*dp;
    FILE* f;
    f = fopen("read.txt", "rt");
    fscanf(f,"%d",&n);
    arr = (int*) calloc(n,sizeof(int));
    for (i = 0; i < n; i++)
    {
        fscanf(f,"%d", arr + i);
    }
    dp  = (int*) calloc(n,sizeof(int));
    maxSubSum(arr, dp, n);
    return 0;
}