Pagini recente » Cod sursa (job #1113176) | Cod sursa (job #3220352) | Cod sursa (job #2688111) | Cod sursa (job #652821) | Cod sursa (job #2858509)
#include <bits/stdc++.h>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int v[5001],s[5001],nor[5001];
int n;
unsigned int d[5001][5001];
bool cmp(const int &a, const int &b)
{
return v[a]<v[b];
}
int main()
{
f>>n;
for(int i=0;i<n;i++)
{
f>>v[i];
s[i]=i;
}
sort(s,s+n,cmp);
int k=0;
vector<int> ser;
for(int i=0;i<n;i++)
{
if(i==0||v[s[i]]!=v[s[i-1]]) k++;
nor[s[i]]=k;
}
for(int i=0;i<n;i++)
{
for(int j=1;j<=k;j++)
{
d[i][j]=(i!=0?d[i-1][j]:(INT_MAX-1))+1;
}
if(nor[i]==1) d[i][1]=1;
else if(i!=0) d[i][nor[i]]=min(d[i][nor[i]],d[i-1][nor[i]-1]+1);
//for(int j=1;j<=k;j++)
//{
// g<<d[i][j]<<' ';
// }
//g<<'\n';
}
if(d[n-1][k]>n) g<<-1;
else g<<d[n-1][k];
return 0;
}