0_0_20614573_9828.cpp:4:51: error: stray '#' in program
using namespace std ; typedef long long LL ; #define clr( a , x ) memset ( a , x , sizeof a ) const int MAXN = 505 ;const int mod = 1e9 + 7 ; int G[MAXN][2] , cnt ;int f[MAXN] ;int root[MAXN] , idx ;int is[MAXN] ;int num[MAXN] ;int dp[MAXN] , dp2[MAXN][MAXN] ;int n , cur ; void upd ( int& x , int y ) { x += y ; if ( x >= mod ) x -= mod ;} void preprocess () { dp[0] = dp[1] = 1 ; for ( int i = 2 ; i < MAXN ; ++ i ) { for ( int j = 0 ; j < i ; ++ j ) { upd ( dp[i] , ( LL ) dp[j] * dp[i - 1 - j] % mod ) ; } }} void dfs ( int u , int x ) { int l = G[u][0] , r = G[u][1] ; if ( is[u] == is[l] ) dfs ( l , x ) ; if ( is[u] == is[r] ) dfs ( r , x ) ; if ( is[l] != is[u] && is[r] != is[u] ) { if ( !l && !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i + 1] ; } } else if ( !l ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i] ; } } else if ( !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i] ; } } else { dp2[u][0] = 1 ; for ( int i = 1 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; } } } else if ( is[u] != is[l] ) { if ( !l ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp[j] * dp2[r][i - j] % mod ) ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp2[r][i] ; } } } else if ( is[u] != is[r] ) { if ( !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp[j] * dp2[l][i - j] % mod ) ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp2[l][i] ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp2[l][j] * dp2[r][i - j] % mod ) ; } } }} int newnode ( int x ) { ++ cnt ; G[cnt][0] = G[cnt][1] = 0 ; f[cnt] = cur ; is[cnt] = x ; return cnt ;} void solve () { int op , x ; idx = cnt = 0 ; cur = 1 ; newnode ( 0 ) ; for ( int i = 1 ; i <= n ; ++ i ) { scanf ( "%d" , &op ) ; if ( op == 0 ) cur = f[cur] ; else if ( op <= 2 ) { if ( !G[cur][op - 1] ) { G[cur][op - 1] = newnode ( is[cur] ) ; num[is[cur]] -- ; } cur = G[cur][op - 1] ; } else { scanf ( "%d" , &x ) ; G[cur][op - 3] = newnode ( ++ idx ) ; root[idx] = cnt ; num[idx] = x - 1 ; } } int ans = 1 ; for ( int i = 1 ; i <= idx ; ++ i ) if ( num[i] ) { dfs ( root[i] , num[i] ) ; ans = ( LL ) ans * dp2[root[i]][num[i]] % mod ; } printf ( "%d\n" , ans ) ;} int main () { int cas = 0 ; preprocess () ; while ( ~scanf ( "%d" , &n ) ) { printf ( "Case #%d: " , ++ cas ) ; solve () ; } return 0 ;}
^
0_0_20614573_9828.cpp:4:52: error: 'define' does not name a type
using namespace std ; typedef long long LL ; #define clr( a , x ) memset ( a , x , sizeof a ) const int MAXN = 505 ;const int mod = 1e9 + 7 ; int G[MAXN][2] , cnt ;int f[MAXN] ;int root[MAXN] , idx ;int is[MAXN] ;int num[MAXN] ;int dp[MAXN] , dp2[MAXN][MAXN] ;int n , cur ; void upd ( int& x , int y ) { x += y ; if ( x >= mod ) x -= mod ;} void preprocess () { dp[0] = dp[1] = 1 ; for ( int i = 2 ; i < MAXN ; ++ i ) { for ( int j = 0 ; j < i ; ++ j ) { upd ( dp[i] , ( LL ) dp[j] * dp[i - 1 - j] % mod ) ; } }} void dfs ( int u , int x ) { int l = G[u][0] , r = G[u][1] ; if ( is[u] == is[l] ) dfs ( l , x ) ; if ( is[u] == is[r] ) dfs ( r , x ) ; if ( is[l] != is[u] && is[r] != is[u] ) { if ( !l && !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i + 1] ; } } else if ( !l ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i] ; } } else if ( !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i] ; } } else { dp2[u][0] = 1 ; for ( int i = 1 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; } } } else if ( is[u] != is[l] ) { if ( !l ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp[j] * dp2[r][i - j] % mod ) ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp2[r][i] ; } } } else if ( is[u] != is[r] ) { if ( !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp[j] * dp2[l][i - j] % mod ) ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp2[l][i] ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp2[l][j] * dp2[r][i - j] % mod ) ; } } }} int newnode ( int x ) { ++ cnt ; G[cnt][0] = G[cnt][1] = 0 ; f[cnt] = cur ; is[cnt] = x ; return cnt ;} void solve () { int op , x ; idx = cnt = 0 ; cur = 1 ; newnode ( 0 ) ; for ( int i = 1 ; i <= n ; ++ i ) { scanf ( "%d" , &op ) ; if ( op == 0 ) cur = f[cur] ; else if ( op <= 2 ) { if ( !G[cur][op - 1] ) { G[cur][op - 1] = newnode ( is[cur] ) ; num[is[cur]] -- ; } cur = G[cur][op - 1] ; } else { scanf ( "%d" , &x ) ; G[cur][op - 3] = newnode ( ++ idx ) ; root[idx] = cnt ; num[idx] = x - 1 ; } } int ans = 1 ; for ( int i = 1 ; i <= idx ; ++ i ) if ( num[i] ) { dfs ( root[i] , num[i] ) ; ans = ( LL ) ans * dp2[root[i]][num[i]] % mod ; } printf ( "%d\n" , ans ) ;} int main () { int cas = 0 ; preprocess () ; while ( ~scanf ( "%d" , &n ) ) { printf ( "Case #%d: " , ++ cas ) ; solve () ; } return 0 ;}
^
0_0_20614573_9828.cpp:4:154: error: 'MAXN' was not declared in this scope
using namespace std ; typedef long long LL ; #define clr( a , x ) memset ( a , x , sizeof a ) const int MAXN = 505 ;const int mod = 1e9 + 7 ; int G[MAXN][2] , cnt ;int f[MAXN] ;int root[MAXN] , idx ;int is[MAXN] ;int num[MAXN] ;int dp[MAXN] , dp2[MAXN][MAXN] ;int n , cur ; void upd ( int& x , int y ) { x += y ; if ( x >= mod ) x -= mod ;} void preprocess () { dp[0] = dp[1] = 1 ; for ( int i = 2 ; i < MAXN ; ++ i ) { for ( int j = 0 ; j < i ; ++ j ) { upd ( dp[i] , ( LL ) dp[j] * dp[i - 1 - j] % mod ) ; } }} void dfs ( int u , int x ) { int l = G[u][0] , r = G[u][1] ; if ( is[u] == is[l] ) dfs ( l , x ) ; if ( is[u] == is[r] ) dfs ( r , x ) ; if ( is[l] != is[u] && is[r] != is[u] ) { if ( !l && !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i + 1] ; } } else if ( !l ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i] ; } } else if ( !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp[i] ; } } else { dp2[u][0] = 1 ; for ( int i = 1 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; } } } else if ( is[u] != is[l] ) { if ( !l ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp[j] * dp2[r][i - j] % mod ) ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp2[r][i] ; } } } else if ( is[u] != is[r] ) { if ( !r ) { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp[j] * dp2[l][i - j] % mod ) ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = dp2[l][i] ; } } } else { for ( int i = 0 ; i <= x ; ++ i ) { dp2[u][i] = 0 ; for ( int j = 0 ; j <= i ; ++ j ) { upd ( dp2[u][i] , ( LL ) dp2[l][j] * dp2[r][i - j] % mod ) ; } } }} int newnode ( int x ) { ++ cnt ; G[cnt][0] = G[cnt][1] = 0 ; f[cnt] = cur ; is[cnt] = x ; return cnt ;} void solve () { int op , x ; idx = cnt = 0 ; cur = 1 ; newnode ( 0 ) ; for ( int i = 1 ; i <= n ; ++ i ) { scanf ( "%d" , &op ) ; if ( op == 0 ) cur = f[cur] ; else if ( op <= 2 ) { if ( !G[cur][op - 1] ) { G[cur][op - 1] = newnode ( is[cur] ) ; num[is[cur]] -- ; } cur = G[cur][op - 1] ; } else { scanf ( "%d" , &x ) ; G[cur][op - 3] = newnode ( ++ idx ) ; root[idx] = cnt ; num[idx] = x - 1 ; } } int ans = 1 ; for ( int i = 1 ; i <= idx ; ++ i ) if ( num[i] ) { dfs ( root[i] , num[i] ) ; ans = ( LL ) ans * dp2[root[i]][num[i]] % mod ; } printf ( "%d\n" , ans ) ;} int m
|