Cod sursa(job #347796)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 13 septembrie 2009 13:02:21
Problema Potrivirea sirurilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define Nmx 100001

int n,a[Nmx],nr[Nmx],pz[Nmx],fol[Nmx];
int *A[10003];

using namespace std;

void solve()
{
    int sol=0;
    nr[n]=1;
    pz[n]=-1;
/*    A[a[n]][0]++;
    A[a[n]]=(int*)realloc(A[a[n]],(A[a[n]][0]+1)*sizeof(int));
    A[a[n]][A[a[n]][0]]=n;
    for(int i=n-1;i>=1;--i)
      {
        int ok=0;
        A[a[i]][0]++;
        A[a[i]]=(int*)realloc(A[a[i]],(A[a[i]][0]+1)*sizeof(int));
        int x=a[i];
        A[x][A[x][0]]=i;
        x++;
        for(int j=1;j<=A[x][0];++j)
          if(!fol[A[x][j]])
          {
              nr[i]=nr[A[x][j]]+1;
              pz[i]=A[x][j];
              fol[pz[i]]=1;
              ok=1;
              break;
          }
        if(ok==0)
         {
           nr[i]=1;
           pz[i]=-1;
         }
      }
    memset(fol,0,sizeof(fol));
    for(int i=1;i<=n;i++)
     if(fol[i]==0)
     {
        int j=i;
        fol[i]=1;
        while(pz[j]!=-1)
        {
            j=pz[j];
            fol[j]=1;
        }
        sol++;
     }
    printf("%d\n",sol);
    */
}

int main()
{
    freopen("strmatch.in","r",stdin);
    freopen("strmatch.out","w",stdout);
    scanf("%d",&n);
    for(int i=0;i<=10000;++i)
    {
        A[i]=(int *)realloc(A[i],2*sizeof(int));
        A[i][0]=0;
    }
    for(int i=1;i<=n;++i)
        scanf("%d",&a[i]);
    solve();
    return 0;
}