Pagini recente » Cod sursa (job #2215497) | Cod sursa (job #394421) | Cod sursa (job #1757477) | Cod sursa (job #2556937) | Cod sursa (job #22590)
Cod sursa(job #22590)
#include <stdio.h>
#define N_MAX 5001
int n,m,a[N_MAX],t[N_MAX],p[N_MAX];
long v[N_MAX],c[N_MAX];
void citire(){
int bun;
FILE *fin=fopen("secv.in","r");
fscanf(fin,"%d",&n);
for (int i=1;i<=n;i++){
fscanf(fin,"%ld",&v[i]);
bun=1;
for (int j=1;j<=m;j++)
if (c[j]==v[i])
bun=0;
if (bun)
c[++m]=v[i];
}
fclose(fin);
}
void prelucrare(){
for (int i=n;i>=1;i--){
a[i]=1;
t[i]=0;
p[i]=i;
for (int j=n;j>i;j--)
if (v[i]<v[j])
if (a[j]+1>a[i]){
a[i]=a[j]+1;
t[i]=j;
p[i]=p[j];
}
else
if (a[j]+1==a[i])
if (v[t[i]]>v[j]){
t[i]=j;
p[i]=p[j];
}
}
}
void afisare(){
FILE *fout=fopen("secv.out","w");
int min=N_MAX;
for (int i=1;i<=n;i++)
if (a[i]==m)
if (min>p[i]-i+1)
min=p[i]-i+1;
if (min==N_MAX)
fprintf(fout,"-1\n");
else
fprintf(fout,"%d\n",min);
fclose(fout);
}
int main(){
citire();
prelucrare();
afisare();
return 0;
}