Facebook
From Orion, 2 Weeks ago, written in C++.
Embed
Download Paste or View Raw
Hits: 201
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.     int t;
  10.     int *result;//The test result array
  11.     scanf("%d",&t);//Get the test case number
  12.     result=(int*)malloc(sizeof(int)*t);//allocate memory
  13.     for (int i = 0; i < t; i++)
  14.     {  
  15.         result[i]=1;//intialise with 1
  16.         int n,*guest;
  17.         string chain;//binary string
  18.         scanf("%d",&n);// the number of hats
  19.         guest=(int*)malloc(sizeof(int)*n);//allocate
  20.         int current;//current means the first hat number
  21.         for (int j = 0; j < n; j++)
  22.         {
  23.             scanf("%d",&guest;[j]);//get the input of hat number
  24.         }
  25.         current=guest[0];
  26.         std::cin>>chain;//get the binary string
  27.         for (int j = 0; j < n; j++)
  28.         {
  29.             if (chain[j]=='1')
  30.             {  
  31.                 //check if it goes with the current guest
  32.                 if (current==(j+1))
  33.                 {
  34.                     // if it does then shift the next hat
  35.                     current=guest[j+1];
  36.                 }else{
  37.                     // if it doen't then put 0 for this test
  38.                     result[i]=0;
  39.                 }
  40.                
  41.             }else{
  42.                 if (chain[current-1]!='1')
  43.                 {
  44.                     //distribute if the current hat is not necessary for the upcoming customer, required to be happy
  45.                     current=guest[j+1];  
  46.                 }
  47.                
  48.             }
  49.            
  50.         }
  51.        
  52.        
  53.  
  54.     }
  55.     for (int r = 0; r < t; r++)
  56.     {  
  57.         // std::cout<<result[r];
  58.         std::cout<<(result[r]==0?"NO":"YES");//print the test case result
  59.     }
  60.    
  61.    
  62.     return 0;
  63. }