SEARCH - Dãy số

Tác giả: skyvn97

Ngôn ngữ: C++

#include<stdio.h>
#define MAX   100010
bool a[MAX];
bool b[MAX];
long c[MAX];
long m,n,p,tmp,y;
long i,j;
long max,cnt,len;
int main(void)
{
    scanf("%ld",&m);
    scanf("%ld",&n);
    scanf("%ld",&p);
    y=0;
    for (i=1;i<=m;i=i+1)
        {
         scanf("%ld",&tmp);
         if (!a[tmp]) y++;
         a[tmp]=true;
        }
    m=y;
    for (i=1;i<=n;i=i+1)
        {
         scanf("%ld",&tmp);
         b[tmp]=true;
        }
    max=0;
    cnt=0;
    len=0;
    for (i=1;i<=p;i=i+1)
        {
         scanf("%ld",&tmp);
         if (a[tmp])
            {
             if (!c[tmp]) cnt++;
             c[tmp]=true;
             len++;
             continue;
            }
         if (b[tmp])
            {
             if (cnt==m)
                {
                 if (len>max) max=len;                                  
                }
             for (j=0;j<MAX;j=j+1) c[j]=false;                 
             len=0;
             cnt=0;
             continue;
            }            
         len++;         
        }
    if ((cnt==m) && (len>max)) max=len;
    printf("%ld",max);
    return 0;
}

Download