Pagini recente » Cod sursa (job #2848105) | Cod sursa (job #767185) | Cod sursa (job #1987337) | Cod sursa (job #101043) | Cod sursa (job #230285)
Cod sursa(job #230285)
#include<stdio.h>
#define INF 1<<30
#include<algorithm>
using namespace std;
int Min,i,j,n,m,a[5111],b[5111],v[5111],c1[5003],c2[5003];
int main(){
FILE *f=fopen("secv.in","r");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&a[i]);
v[i]=a[i];
}
fclose(f);
sort(v+1,v+1+n);
v[0]=-1;
for(i=1;i<=n;i++){
if(v[i]!=v[i-1]){
m++;
b[m]=v[i];
}
}
for(i=0;i<=n;i++){
c1[i]=1;
c2[i]=-1;
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
if(c1[j]!=-1){
if(b[i] == a[j]){
c2[j]=c1[j];
if(c2[j-1]!=-1 && c2[j] > c2[j-1] + 1)
c2[j] = c2[j-1] + 1;
}
else{
if(c2[j-1]!=-1)
c2[j] = c2[j-1] + 1;
}
}
}
for(j=0;j<=n;j++){
c1[j]=c2[j];
c2[j]=-1;
}
}
Min=INF;
for(j=1;j<=n;j++){
if(c1[j]!=-1){
if(c1[j]<Min)
Min=c1[j];
}
}
FILE *g=fopen("secv.out","w");
if(Min==INF)
fprintf(g,"%d",-1);
else
fprintf(g,"%d",Min);
fclose(g);
return 0;
}