Pagini recente » Cod sursa (job #3320404) | Cod sursa (job #3347376) | Cod sursa (job #3334033) | Cod sursa (job #3347853) | Cod sursa (job #3347071)
#include <fstream>
#include <unordered_map>
#define NMAX 5002
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int N,fr,v[NMAX],dp[NMAX],last[NMAX];
unordered_map<int,int>f;
void citire()
{
fin>>N;
for(int i=1; i<=N; i++)
{
fin>>v[i];
f[v[i]]++;
}
}
int main()
{
citire();
fr=f.size();
for(int i=N; i>=1; i--)
{
dp[i]=1;
last[i]=i;
for(int j=i+1; j<=N; j++)
{
if(v[i]<v[j] && dp[i]<dp[j]+1)
{
dp[i]=dp[j]+1;
last[i]=last[j];
}
}
}
int ok,l;
ok=0;
l=100000000;
for(int i=1; i<=N; i++)
{
if(dp[i]==fr)
{
ok=1;
l=min(l,last[i]-i+1);
}
}
if(ok)
{
fout<< l;
}
else
{
fout<< -1;
}
fout<< "\n";
return 0;
}