Cod sursa(job #253795)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 6 februarie 2009 12:30:48
Problema Episoade Scor 0
Compilator c Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 1 Marime 2.73 kb
#include <stdio.h>
#include <string.h>

int a[111],frecv[111],i,j,l,nr,nrr,T,N,frecv1[111],ok;
char s[1010];

int max(int a, int b)
{
    if (a>b) return a;
    return b;
}

int main()
{
    freopen("episoade.in","r",stdin);
    freopen("episoade.out","w",stdout);
    gets(s);
    l=strlen(s);
    memset(frecv,0,sizeof(frecv));
    scanf("%d %d",&T,&N);
    nr=0;
    nrr=N;
    if (s[1]=='#')
        {
            frecv[s[0]-'0']=max(s[0]-'0',s[2]-'0');
            frecv1[s[0]-'0']=nrr;
            nrr--;
            frecv[s[2]-'0']=max(s[0]-'0',s[2]-'0');
            frecv1[s[2]-'0']=nrr;
        }
        else
    if (s[1]=='>') 
        {
            nrr--;
            frecv[s[0]-'0']=max(s[0]-'0',s[2]-'0');
            frecv1[s[0]-'0']=nrr;
            nrr--;
            frecv[s[2]-'0']=max(s[0]-'0',s[2]-'0');
            frecv1[s[2]-'0']=nrr;
        }    
    for (i=2;i<l;++i)
    {
        if (s[i+1]=='#')
        {
            nrr--;
            if (frecv[s[i]-'0']==0)
                {frecv[s[i]-'0']=max(s[i]-'0',s[i+2]-'0');frecv1[s[i]-'0']=nrr;}
            if (frecv[s[i+2]-'0']==0)
                {frecv[s[i+2]-'0']=max(s[i]-'0',s[i+2]-'0');frecv1[s[i+2]-'0']=nrr;}
        }
        else
         if (s[i+1]=='>')
           {
            
            if (frecv[s[i]-'0']==0)
            {
                
                nrr--;
                frecv[s[i]-'0']=max(s[i]-'0',s[i+2]-'0');
                frecv1[s[i]-'0']=nrr;
            }
            if (frecv[s[i+2]-'0']==0)
            {
                nrr--;
                frecv[s[i+2]-'0']=max(s[i]-'0',s[i+2]-'0');
                frecv1[s[i+2]-'0']=nrr;
            }
           }
    }
    
    
    while(T--)
    {
        for (i=1;i<=N;++i)
              scanf("%d ", &a[i]);
             
        ok=1;     
        for (i=1;i<N;++i)
             if (frecv1[a[i]]>frecv1[a[i+1]] && frecv[a[i]]>frecv[a[i+1]])
                  {
                    ok=0;
                    break;
                  }
                else
              if (frecv1[a[i]]<frecv1[a[i+1]] && frecv[a[i]]<frecv[a[i+1]])
                 {
                        ok=0;
                        break;
                 }
                 else
              if (frecv1[a[i]]>frecv[a[i+1]] && frecv[a[i]]!=frecv[a[i+1]])
                 {
                        ok=0;
                        break;
                 }       
        printf("%d\n", ok);
    }  
        //memset(frecv,0,sizeof(frecv));
     /*for (i=1;i<=N;++i)
           printf("%d ", frecv[i]);
           printf("\n");
     for (i=1;i<=N;++i)
           printf("%d ", frecv1[i]);*/      
           
     return 0;
}