Pagini recente » Cod sursa (job #3173566) | Cod sursa (job #1526261) | Cod sursa (job #1226052) | Cod sursa (job #1735577) | Cod sursa (job #205919)
Cod sursa(job #205919)
#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++);
for(;a[i]==s->x;i++);
pozi=i-1;
s=s->next;
if(s==NULL)
fprintf(fout,"1\n");
else{
for(;i<=N&&s;i++)
if(a[i]==s->x) s=s->next;
if(s==NULL)
fprintf(fout,"%d\n",i-pozi);
else
fprintf(fout,"-1\n");
}
/*
if(s==NULL)
fprintf(fout,"1\n");
else
if(s->next!=NULL){
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");
}
else{
for(;i<=N&&a[i]!=s->x;i++);
if(i<=N)
fprintf(fout,"%d\n",i-pozi+1);
else
fprintf(fout,"-1\n");
}
*/
fclose(fin);
fclose(fout);
return 0;
}