| Task: | Swapping letters |
| Sender: | Wu xiaobo |
| Submission time: | 2020-09-20 02:20:42 +0300 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | TIME LIMIT EXCEEDED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | details |
| #2 | ACCEPTED | 0.01 s | details |
| #3 | ACCEPTED | 0.01 s | details |
| #4 | ACCEPTED | 0.17 s | details |
| #5 | ACCEPTED | 0.12 s | details |
| #6 | TIME LIMIT EXCEEDED | -- | details |
| #7 | ACCEPTED | 0.64 s | details |
| #8 | ACCEPTED | 0.12 s | details |
| #9 | ACCEPTED | 0.04 s | details |
| #10 | ACCEPTED | 0.04 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:41:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < x.size(); i++) {
~~^~~~~~~~~~
input/code.cpp:60:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(i2 >= x_letters[b].size() or i1 >= x_letters[a].size()){
~~~^~~~~~~~~~~~~~~~~~~~~~
input/code.cpp:60:48: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(i2 >= x_letters[b].size() or i1 >= x_letters[a].size()){
~~~^~~~~~~~~~~~~~~~~~~~~~Code
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
void merge(vector<int>& nums1, vector<int>& nums2) {
int m = nums1.size();
int n = nums2.size();
int last = m + n - 1;
while (n) {
if (m == 0) {
nums1[last--] = nums2[--n];
} else if (nums2[n-1] > nums1[m-1]) {
nums1[last--] = nums2[--n];
} else {
nums1[last--] = nums1[--m];
}
}
}
int main() {
int n;
cin >> n;
char forbids[n][2];
for (int i = 0; i < n; i++)
cin >> forbids[i][0] >> forbids[i][1];
string x, y;
cin >> x >> y;
if(x.length() != y.length()){
cout << "NO";
return 0;
}
map<char, vector<int> > x_letters;
map<char, vector<int> > y_letters;
for (int i = 0; i < x.size(); i++) {
x_letters[x[i]].push_back(i);
y_letters[y[i]].push_back(i);
}
for (int i = 0; i < n; i++) {
char a, b;
a = forbids[i][0];
b = forbids[i][1];
// vector<int> x_ind_a, x_ind_b, y_ind_a, y_ind_b;
int m = 0;
m += x_letters[a].size();
m += x_letters[b].size();
int i1, i2, i3, i4;
i1 = 0;
i2 = 0;
i3 = 0;
i4 = 0;
for(int p=0; p < m; p++){
if(i2 >= x_letters[b].size() or i1 >= x_letters[a].size()){
break;
}
if(x_letters[a][i1] < x_letters[b][i2] and y_letters[a][i3] < y_letters[b][i4]){
i1 += 1;
i3 += 1;
}
else if(x_letters[a][i1] > x_letters[b][i2] and y_letters[a][i3] > y_letters[b][i4]){
i2 += 1;
i4 += 1;
}
else{
cout<<"NO";
return 0;
}
}
}
cout << "YES";
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: ACCEPTED
| input |
|---|
| 10 d c e b f y h q ... |
| correct output |
|---|
| YES |
| user output |
|---|
| YES |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 10 a i a l d a g h ... |
| correct output |
|---|
| NO |
| user output |
|---|
| NO |
Test 6
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 325 a b a e a f a g ... |
| correct output |
|---|
| YES |
| user output |
|---|
| (empty) |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 325 a c a e a g a h ... |
| correct output |
|---|
| NO |
| user output |
|---|
| NO |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 0 dlkinfmdyjaofxbccwhhbxzartqwdr... |
| correct output |
|---|
| YES |
| user output |
|---|
| YES |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 0 bxisdrdpgcsnnvhnfgimivzqpqjwqc... |
| correct output |
|---|
| NO |
| user output |
|---|
| NO |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 0 mrwduerojcguvxzmbomfsainvqehsl... |
| correct output |
|---|
| NO |
| user output |
|---|
| NO |
