Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cctype>
- int parse(const char c)
- {
- size_t size = 1;
- bool find_one = false;
- bool find_pattern = true;
- bool flag_zero_pattern = true;
- int k = 1;
- int m = 0;
- int counter_k = 0;
- int counter_m = 0;
- bool flag_zero = true;
- if (c != '0') {
- return 0;
- }
- char i;
- while ((i = std::cin.get())) {
- if (std::isspace(i) || i == EOF) {
- std::cin.unget();
- break;
- }
- size++;
- if (find_pattern) {
- if (i == '0') {
- if (flag_zero_pattern) {
- k++;
- } else {
- find_pattern = false;
- std::cin.unget();
- size--;
- }
- } else if (i == '1') {
- find_one = true;
- m++;
- flag_zero_pattern = false;
- } else {
- return 0;
- }
- } else {
- if (i == '0') {
- if (counter_k < k && flag_zero) {
- counter_k++;
- } else {
- return 0;
- }
- } else if (i == '1') {
- if (counter_k == k && flag_zero) {
- flag_zero = false;
- }
- if (counter_m < m && !flag_zero) {
- counter_m++;
- } else {
- return 0;
- }
- if (counter_m == m && !flag_zero) {
- counter_k = 0;
- counter_m = 0;
- flag_zero = true;
- }
- }
- }
- }
- return find_one && !(size % (k + m));
- }
- int main()
- {
- char c;
- while ((c = std::cin.get()) != EOF) {
- if (std::isspace(c)) {
- continue;
- } else {
- int ans = parse(c);
- std::cout << ans << std::endl;
- while ((c = std::cin.get())) {
- if (isspace(c)) {
- break;
- } else if (c == EOF) {
- return 0;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment