Advertisement
militaryCoder

Bracket Balance

Sep 26th, 2020 (edited)
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <cstdio>
  2.  
  3. constexpr unsigned int LENGTH = 10e6;
  4.  
  5. int main()
  6. {
  7.     char *source = new char[LENGTH];
  8.     scanf("%s", source);
  9.    
  10.     unsigned int queriesCount;
  11.     scanf("%u", &queriesCount);
  12.  
  13.     unsigned int *queriesData = new unsigned int[queriesCount * 2];
  14.  
  15.     for (unsigned int i = 0; i < queriesCount * 2; i += 2)
  16.     {
  17.         scanf("%u %u", &queriesData[i], &queriesData[i + 1]);
  18.     }
  19.  
  20.     char *answer = new char[queriesCount + 1];
  21.     answer[queriesCount] = '\0';
  22.     unsigned int writePointer = 0;
  23.     for (unsigned int i = 0; i < queriesCount * 2; i += 2)
  24.     {
  25.         unsigned int openingBs = 0;
  26.         unsigned int closingBs = 0;
  27.  
  28.         for (unsigned int j = queriesData[i] - 1; j <= queriesData[i + 1] - 1; j++)
  29.         {
  30.             if ('(' == source[j]) openingBs++;
  31.             else closingBs++;
  32.         }
  33.  
  34.         answer[writePointer] = openingBs == closingBs ? '1' : '0';
  35.         writePointer++;
  36.     }
  37.  
  38.     printf("%s", answer);
  39.  
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement