Pagini recente » Cod sursa (job #1410503) | Cod sursa (job #2547826) | Cod sursa (job #331652) | Cod sursa (job #2912547) | Cod sursa (job #483631)
Cod sursa(job #483631)
#include <fstream>
#include <list>
#define NMAX 5005
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
long n, m, x[NMAX], l[NMAX], p[NMAX], MIN = NMAX;
list<long> a;
void Read();
void Solve();
void Write();
int main()
{
Read();
Solve();
Write();
return 0;
}
void Read()
{
fin >> n;
long i;
for ( i = 1; i <= n; ++i )
{
fin >> x[i];
a.push_back(x[i]);
}
a.sort();
a.unique();
m = a.size();
fin.close();
}
void Solve()
{
long i, j, max, k;
l[n] = 1;
p[n] = n;
for ( i = n-1; i >= 1; --i)
{
max = 0;
k = 0;
for ( j = i; j <= n; j++)
if( l[j] > max && x[i] < x[j] )
{
max = l[j];
p[i] = p[j];
}
for ( j = i + 1; j <=n; ++j )
if ( l[i] == m && p[i] > p[j] )
p[i] = p[j];
if ( max == 0 )
p[i] = i;
l[i] = max + 1;
}
for ( i = 1; i <= n; i++)
if ( l[i] == m && p[i]-i+1 < MIN )
MIN = p[i] - i + 1;
}
void Write()
{
//long i;
if ( MIN == NMAX )
MIN = -1;
fout << MIN << '\n';
fout.close();
}