Submission details
Task:Swapping letters
Sender:kkivimaki
Submission time:2020-09-19 14:59:48 +0300
Language:C++ (C++11)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4--details
#5--details
#6--details
#7--details
#8--details
#9--details
#10--details

Compiler report

input/code.cpp: In function 'int count(std::__cxx11::string, char)':
input/code.cpp:14:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < s.size(); i++) {
                    ~~^~~~~~~~~~
input/code.cpp: In function 'int main()':
input/code.cpp:36:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < letters.size(); i++) {
                    ~~^~~~~~~~~~~~~~~~
input/code.cpp:37:21: warning: array subscript has type 'char' [-Wchar-subscripts]
         f[letters[i]] = 1;
                     ^
input/code.cpp:50:14: warning: array subscript has type 'char' [-Wchar-subscripts]
         l0[c0].push_back(c1);
              ^
input/code.cpp:51:14: warning: array subscript has type 'char' [-Wchar-subscripts]
         l0[c1].push_back(c0);
              ^
input/code.cpp:66:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i...

Code

#include <vector>
#include <iostream>
#include <string>

std::vector<int> l0[1000];
int f[1000];

std::string letters = "abcdefghijklmnopqrstuvwxyz";


int count(std::string s, char c) {
    //std::cout << "Looking for " << c << " from " << s << std::endl;
    int n = 0;
    for(int i = 0; i < s.size(); i++) {
        if (s.c_str()[i] == c) n++;
    }
    //std::cout << "Found " << n << std::endl;
    return n;
}

int find(std::string y, char c, int m) {
    //std::cout << "\tind " << c << " " << m  << " " << y << std::endl;
    int i = 0;
    while(1) {
        if (y.c_str()[i] == c) {
            m -= 1;
            if (m <= 0) break;
        }
        i += 1;
    }
    //std::cout << i << std::endl;
    return i;
}

int main() {
    for(int i = 0; i < letters.size(); i++) {
        f[letters[i]] = 1;
    }

    int n;
    std::cin >> n;

    while (n > 0) {
        n -= 1;
        char c0;
        char c1;
        std::cin >> c0;
        std::cin >> c1;

        l0[c0].push_back(c1);
        l0[c1].push_back(c0);
    }


    std::string x;
    std::string y;

    std::cin >> x;
    std::cin >> y;

    //if sorted(x) != sorted(y):
    //   print("NO")
    //  return

    int i = 0;
    for(int i = 0; i < x.size(); i++) {
        char c = x.c_str()[i];

        int j = find(y, c, f[c]);

        for (int r : l0[c]) {
            std::string s0 = std::string(x, 0, i);
            std::string s1 = std::string(y, 0, j);

            if (count(s0, r) != count(s1, r)) {

                //std::cout << r << std::endl;
                //std::cout << "s0 " << s0 << std::endl;
                //std::cout << "s1 " << s1 << std::endl;
                //std::cout << c << std::endl;
                //std::cout << i << std::endl;
                std::cout << "NO" << std::endl;
                return 0;
            }
        }
        f[c] += 1;

    }
    std::cout << "YES" << std::endl;
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
5
a b
b c
c d
d e
...

correct output
YES

user output
YES

Test 2

Verdict: ACCEPTED

input
2
a b
b c
acbbaca
cabbaac

correct output
YES

user output
YES

Test 3

Verdict: ACCEPTED

input
2
a b
b c
acbbaca
baccaab

correct output
NO

user output
NO

Test 4

Verdict:

input
10
d c
e b
f y
h q
...

correct output
YES

user output
(empty)

Test 5

Verdict:

input
10
a i
a l
d a
g h
...

correct output
NO

user output
(empty)

Test 6

Verdict:

input
325
a b
a e
a f
a g
...

correct output
YES

user output
(empty)

Test 7

Verdict:

input
325
a c
a e
a g
a h
...

correct output
NO

user output
(empty)

Test 8

Verdict:

input
0
dlkinfmdyjaofxbccwhhbxzartqwdr...

correct output
YES

user output
(empty)

Test 9

Verdict:

input
0
bxisdrdpgcsnnvhnfgimivzqpqjwqc...

correct output
NO

user output
(empty)

Test 10

Verdict:

input
0
mrwduerojcguvxzmbomfsainvqehsl...

correct output
NO

user output
(empty)