Cod sursa(job #2908939)

Utilizator Shapka-NevedimkaSemenenco Stanislav Shapka-Nevedimka Data 7 iunie 2022 02:07:03
Problema Subsir crescator maximal Scor 0
Compilator c-32 Status done
Runda Arhiva educationala Marime 1 kb
/*
    Maximum Increasing Subarray Problem
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define  _CRT_SECURE_NO_WARNINGS

void maxIncrSubArr(int* arr, int* dp, int n)
{
    FILE* g;
    g = fopen("scmax.out", "wt");
	int i, maxSum, maxIdx = 0, bgn = 0;
	dp[0] = 1;
	maxSum = dp[0];
	for (i = 1; i < n; i++)
	{
		if (arr[i] >= arr[i - 1])
		{
			dp[i] = dp[i - 1] + 1;
			if (maxSum < dp[i])
			{
				maxSum = dp[i];
				maxIdx = i;
			}
		}
		else
			dp[i] = 1;

	}
	bgn = maxIdx;
	while (dp[bgn] > dp[bgn - 1])
	{
		bgn--;
	}
    fprintf(g,"%d\n", maxSum-1);
	//for (i = bgn; i <= maxIdx; i++)
	//	fprintf(g,"%d ", arr[i]);
}

int main()
{
    int n,i;
    int *arr,*dp;
    
    FILE* f;
    f = fopen("scmax.in", "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));

	maxIncrSubArr(arr, dp, n);
    return 0;
}