Pagini recente » Cod sursa (job #245828) | Cod sursa (job #485897) | Cod sursa (job #678148) | Cod sursa (job #1777870) | Cod sursa (job #875958)
Cod sursa(job #875958)
#include<cstdio>
#define MAX_N 50005
FILE *f=fopen("subsir2.in","r");
FILE *g=fopen("subsir2.out","w");
using namespace std;
int n,v[MAX_N],len[MAX_N],next[MAX_N],poz[MAX_N];
inline void read ( void )
{
fscanf(f,"%d",&n);
for( int index(1) ; index <= n; ++index)
fscanf(f,"%d", &v[index]);
}
inline void write ( int start )
{
if(next[start]!=start)
{
fprintf(g,"%d",next[start]);
write(next[start]);
}
}
inline void solve ( void )
{
int i;
for( i=n; i>=1 ; --i)
{
len[i]=1;
next[i]=i;
int minim=1<<30;
int min=1000001;
for(int j = i+1 ; j <= n ; ++j )
{
if( v[j] > v[i])
{
if( len[j]<minim && v[j]<min )
{
minim=len[j];
next[i]=j;
len[i]=len[j]+1;
}
else
if( len[j]==minim && v[j]<min && v[j] <= v[next[i]])
next[i]=j;
if(v[j]<min)
min=v[j];
}
}
}
int mn=-1<<30;
int j;
for(j=1;j<=n;++j)
if(mn<len[j])
j=mn;
write( mn );
}
int main()
{
read();
solve();
return 0;
}