Pagini recente » Cod sursa (job #980849) | Cod sursa (job #566631) | Cod sursa (job #2648164) | Cod sursa (job #372) | Cod sursa (job #1470640)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in",ios::in);
ofstream g("scmax.out",ios::out);
void findMaxAscSubarr(int v[],int maxLenght[],int n)
{
maxLenght[0] = 1;
for (int i = 1 ; i < n ; i++)
{
maxLenght[i] = (v[i]>v[i-1]) ? maxLenght[i-1] + 1 : maxLenght[i-1];
}
}
void showMaxAscSubarr ( int v[] , int maxLenght[],int n)
{
int solContor = 1;
int MAX = maxLenght[n-1];
int sol[MAX+1];
sol[0] = v[0];
sol[MAX] = maxLenght[n-1];
for (int i = 0 ; i < n ; i++)
{
if ( maxLenght[i] == 1)
{
if(v[i] < sol[1]) sol[1] = v[i];
}
else if ( maxLenght[i] == MAX)
{
if(v[i]>sol[MAX]) sol[MAX] = v[i];
}
else
{
if (maxLenght[i] != solContor)
{
sol[++solContor] = v[i];
}
else
{
if (v[i] < sol[solContor] && v[i] > sol[solContor-1])
sol[solContor] = v[i];
}
}
}
for (int i = 1; i <= MAX ; i++)
g<<sol[i]<<" ";
}
int main()
{
int n;
f>>n;
int v[n],maxLenght[n];
for (int i = 0 ;i < n; i++)
f>>v[i];
findMaxAscSubarr(v,maxLenght,n);
showMaxAscSubarr(v,maxLenght,n);
return 0;
}