Pagini recente » Cod sursa (job #2246171) | Cod sursa (job #2825246) | Cod sursa (job #1155784) | Cod sursa (job #828167) | Cod sursa (job #347796)
Cod sursa(job #347796)
#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;
}