Pagini recente » Cod sursa (job #1624964) | Istoria paginii runda/preoji2010_contest/clasament | Cod sursa (job #227988) | Cod sursa (job #1134269) | Cod sursa (job #205909)
Cod sursa(job #205909)
#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 main(){
fscanf(fin,"%d",&N);
fscanf(fin,"%d ",&a[1]);
s=new nod;
s->x=a[1];
s->next=NULL;
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;
}
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;
}
else
if(p->next->x!=a[i]){
aux->next=p->next;
p->next=aux;
}
}
}
/*
for(sir p=s;p;p=p->next)
fprintf(fout,"%d ",p->x );
*/
int pozi;
int i;
for(i=1;a[i]!=s->x;i++);
pozi=i;
s=s->next;
for(;i<=N&&s->next!=NULL;i++)
if(a[i]==s->x) s=s->next;
if(s->next==NULL)
fprintf(fout,"%d\n",i-pozi+1);
else
fprintf(fout,"-1\n");
fclose(fin);
fclose(fout);
return 0;
}