Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using pii = pair<int,pair<int,int>>;
- int dp[256][256][3];
- int ar[256];
- int main(){
- int t=20;
- while(t--){
- int n;
- scanf("%d",&n);
- for(int i=1;i<=n;i++) {
- char in;
- scanf(" %c",&in);
- ar[i]=in-'0';
- }
- for(int i=1;i<=n;i++){
- for(int j=1;j<=n;j++){
- for(int k=0;k<=2;k++){
- dp[i][j][k] = false;
- }
- }
- }
- for(int i=n;i>=1;i--){
- for(int j=1;j<=n;j++){
- if(i==j){
- dp[i][j][ar[i]] = true;
- continue;
- }
- for(int k=i;k<j;k++){
- dp[i][j][0] = dp[i][j][0] or ( dp[i][k][0] and dp[k+1][j][2] );
- dp[i][j][1] = dp[i][j][1] or ( ( dp[i][k][0] and dp[k+1][j][1] ) or
- ( dp[i][k][1] and dp[k+1][j][1] ) or
- ( dp[i][k][1] and dp[k+1][j][2] ) or
- ( dp[i][k][2] and dp[k+1][j][0] ) or
- ( dp[i][k][2] and dp[k+1][j][2] ) );
- dp[i][j][2] = dp[i][j][2] or ( ( dp[i][k][0] and dp[k+1][j][0] ) or
- ( dp[i][k][1] and dp[k+1][j][0] ) or
- ( dp[i][k][2] and dp[k+1][j][1] ) ) ;
- }
- }
- }
- if(dp[1][n][0]) printf("yes");
- else printf("no");
- printf("\n");
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment