Cod sursa(job #205909)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 3 septembrie 2008 15:18:51
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#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;


}