Pagini recente » Cod sursa (job #501036) | Cod sursa (job #1191937) | Cod sursa (job #1532954) | Cod sursa (job #2314766) | Cod sursa (job #205929)
Cod sursa(job #205929)
#include<stdio.h>
FILE *fin=fopen("secv.in","r"),
*fout=fopen("secv.out","w");
int N,a[5005];
struct nod{int x;nod* next;};
typedef nod* sir;
sir s;
int cnt;
int main(){
fscanf(fin,"%d",&N);
fscanf(fin,"%d ",&a[1]);
s=new nod;
s->x=a[1];
s->next=NULL;
++cnt;
for(int i=2;i<=N;i++){
fscanf(fin,"%d",&a[i]);
sir aux=new nod;
aux->x=a[i];
if(a[i]<s->x){
aux->next=s;
s=aux;
++cnt;
}
else
if(a[i]!=s->x)
{
sir p;
for(p=s;p->next&&p->next->x<a[i];p=p->next);
if(p->next==NULL){
p->next=aux;
aux->next=NULL;
++cnt;
}
else
if(p->next->x!=a[i]){
aux->next=p->next;
p->next=aux;
+cnt;
}
}
}
/*
for(sir p=s;p;p=p->next)
fprintf(fout,"%d ",p->x );
*/
int pozi;
if(s==NULL){
fprintf(fout,"1\n");
return 0;
}
int i;
sir inc=s;
int sol=5005;
int k=1;
while(sol>cnt&&k<=N)
if(a[k]==inc->x){
s=inc;
for(i=k;a[i]!=s->x;i++);
for(;a[i]==s->x;i++);
pozi=i-1;
k=i;
s=s->next;
for(;i<=N&&s;i++)
if(a[i]==s->x) s=s->next;
if(s==NULL&&sol>i-pozi)
sol=i-pozi;
}
else
++k;
if(sol==5005)
fprintf(fout,"-1\n");
else
fprintf(fout,"%d\n",sol);
fclose(fin);
fclose(fout);
return 0;
}