There is a binary string a of length n . In one operation, you can select any prefix of a with an equal number of 0 and 1 symbols. Then all symbols in the prefix are inverted: each 0 becomes 1 and each 1 becomes 0 .
For example, suppose a = 0111010000 .
In the first operation, we can select the prefix of length 8 since it has four 0 ‘s and four 1 ‘s: [01110100]00→[10001011]00 .
In the second operation, we can select the prefix of length 2 since it has one 0 and one 1 : [10]00101100→[01]00101100 .
It is illegal to select the prefix of length 4 for the third operation, because it has three 0 ‘s and one 1 .
Can you transform the string a into the string b using some finite number of operations (possibly, none)?
Input:
The first line contains integer t — the number of test cases.
The first line of each test case contains integer n — the length of the strings a and b .
The following two lines contain strings a and b of length n , consisting of symbols 0 and 1 .
The sum of n across all test cases does not exceed 3⋅10^5 .
Output:
For each test case, output "YES" if it is possible to transform a into b , or "NO" if it is impossible. You can print each letter in any case (upper or lower).
#include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int n_cases, n, balance, diff; char s1[300001], s2[300001], *c1, *c2; bool any_same, any_different; scanf("%d", &n_cases); while (n_cases--) { scanf("%d", &n); scanf("%s\n%s", s1, s2); c1 = s1; c2 = s2; any_same = false; any_different = false; balance = 0; diff = 0; while (*c1) { any_same = any_same||*c1==*c2; any_different = any_different||*c1!=*c2; if (any_same && any_different) break; balance += *c2 == '1' ? 1 : -1; diff += *c1 - *c2; if (balance == 0) { any_same = false; any_different = false; } c1++; c2++; } printf(((any_same && any_different)||diff!= 0)?"NO\n" : "YES\n"); } return 0; }
INPUT_1:
2
8
00100011
00011001
10
0101010101
0110011010
OUTPUT:
NO
YES
INPUT_2:
5
4
0000
0000
8
01001010
11110000
3
001
000
12
010101010101
100110011010
6
000111
110100
OUTPUT:
YES
NO
NO
YES
NO
Morae Q!
- Find the length of the array’s longest increasing sub-sequence.
- Arrange numbers in a circle so that any two neighbouring numbers differ by 1.
- Find partial names and count the total numbers.
- Find the minimized sum of non-deleted elements of the array after the end of the game.
- Find the maximum number of good sleeping times optimally.
- Sort the elements of the array in the order in which they are required.
- Find the minimum number of flats, monkey needs to visit to catch ninjas.
- Convert the square matrix to matrix in Z form.
- Shift the K elements of each row to right of the matrix.
- Find maximum possible number of students in a balanced team with skills.
- Find the Maximum number of pairs of points you can match with each other.
- Calculate the number of non-empty good subarrays of given array.
- Transform the binary string A into the string B using finite operations.
- Find the number of potion must the character take to jump the hurdles.
- Count the total number of vowels and consonants.
- Return all elements of the matrix in spiral order.
- Return all palindromic paths of the matrix.
- Write the code to change the display in reverse order using pointer.
- Find the number of days the expedition can last.
- Find the minimum size of the sub-segment to make the array pairwise distinct.