Pagini recente » Cod sursa (job #2471581) | Cod sursa (job #1926446) | Cod sursa (job #907382) | Cod sursa (job #1151983) | Cod sursa (job #2908938)
/*
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;
}