1644A - Doors and Keys - CodeForces Solution


implementation *800

Please click on ads to support us..

Python Code:

n = int(input())
for i in range(n):
    s = input()
    if s.find("r") < s.find("R") and s.find("g") < s.find("G") and s.find("b") < s.find("B"):
        print("YES")
    else:
        print("NO")

C++ Code:

#include <iostream>
#include <string>

bool checkKey(struct Keys *keys, char door);

struct Keys {
    int red = 0;
    int green = 0;
    int blue = 0;
};

int main(void) {
    int t;  // Amount of test cases;

    std::cin >> t;
    for (int i = 0; i < t; ++i) {
        bool success = true;
        struct Keys keys;
        std::string map;    // Map of the hallway.

        std::cin >> map;
        for (size_t j = 0; j < map.size(); ++j) {
            if (map[j] == 'r')
                keys.red += 1;
            else if (map[j] == 'g')
                keys.green += 1;
            else if (map[j] == 'b')
                keys.blue += 1;
            else
                success = checkKey(&keys, map[j]);

            if (!success)
                break;
        }
        if (success)
            std::cout << "YES" << std::endl;
        else
            std::cout << "NO" << std::endl;
    }
}

bool checkKey(struct Keys *keys, char door) {
    if (door == 'R' && keys->red > 0) {
        keys->red -= 1;
        return true;
    } else if (door == 'G' && keys->green > 0) {
        keys->green -= 1;
        return true;
    } else if (door == 'B' && keys->blue > 0) {
        keys->blue -= 1;
        return true;
    }
    return false;
}

 	      		 		 	  			  	   			 	


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST