Pagini recente » Cod sursa (job #2316370) | Cod sursa (job #1277873) | Cod sursa (job #1016320) | Cod sursa (job #2624258) | Cod sursa (job #984185)
Cod sursa(job #984185)
#include <fstream>
#define NRM 9901
#define MAXN 260
using namespace std;
ifstream f("culori.in");
ofstream g("culori.out");
int n,v[2*MAXN],nxt[2*MAXN][MAXN],x,pd[2*MAXN][2*MAXN];
long long S;
int main()
{
int i,j,dif;
f>>n;
for(i=1;i<=2*n-1;i++)
f>>v[i];
for(i=1;i<=n;i++)
nxt[2*n][i]=2*n;
for(i=2*n-1;i>=1;i--){
for(j=1;j<=n;j++)
nxt[i][j]=nxt[i+1][j];
nxt[i][v[i]]=i;}
n=2*n-1;
for(i=1;i<=n;i++)
pd[i][i]=1;
for(dif=2;dif+1<=n;dif+=2)
for(i=1;i+dif<=n;i++){
if(v[i]!=v[i+dif])
continue;
j=i+dif;
x=nxt[i+2][v[i+1]];
S=pd[i+2][j];
while(x<j){
S+=1LL*pd[i+1][x]*pd[x+1][j];
x=nxt[x+1][v[x]];}
pd[i][j]=S%NRM;}
g<<pd[1][n]<<'\n';
f.close();
g.close();
return 0;
}