Pagini recente » Cod sursa (job #54737) | Cod sursa (job #1379067) | Cod sursa (job #1509686) | Cod sursa (job #648580) | Cod sursa (job #534683)
Cod sursa(job #534683)
#include<stdio.h>
#define N 5001
#define MAX_IM -1000001
#define MIN_IM 1000001
using namespace std;
long v[N], minim;
int best[N];
int sol[N];
int maxim=0;
int n;
void citire()
{
freopen("subsir2.in","r",stdin);
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%ld",&v[i]);
}
void vector()
{
int x=1;
minim=v[1];
maxim=0;
sol[1]=1;
best[1]=1;
for(int i=2;i<=n;i++)
if(minim>v[i])
{
x=i;
minim=v[i];
maxim=1;
best[x]=1;
}
else
{
int max=MAX_IM;
for(int j=x;j<i;j++)
{
if(max<best[j]&&v[j]<v[i])
{
max=best[j];
best[i]=max+1;
}
if(v[i]==v[j])
max=best[j];
}
if(maxim<best[i])
maxim=best[i];
}
}
void afisare()
{
freopen("subsir2.out","w",stdout);
printf("%d\n",maxim);
for(int i=1;i<=maxim;i++)
printf("%d ",sol[i]);
printf("\n");
for(int i=1;i<=n;i++)
printf("%d ",best[i]);
}
int main()
{
citire();
vector();
afisare();
return 0;
}