CSES - UKIEPC 2016 - Results
Submission details
Task:Rhyming Slang
Sender:KnowYourArchitecture
Submission time:2016-11-12 13:39:55 +0200
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.06 sdetails
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.06 sdetails
#8ACCEPTED0.06 sdetails
#9ACCEPTED0.05 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.06 sdetails
#12ACCEPTED0.05 sdetails
#13ACCEPTED0.05 sdetails

Code

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

using namespace std;

vector<string> split(string s) {
	vector<string> v;
	while (!s.empty()) {
		auto p = s.find(' ');
		if (p == string::npos) {
			v.push_back(s);
			break;
		}
		v.push_back(s.substr(0, p));
		s = s.substr(p+1);
	}
	return v;
}

bool isSuffix(string a, string b) {
	if (a.size() < b.size())
		return false;
	return a.substr(a.size()-b.size()) == b;
}

int main() {
	string tmp;
	string s;
	getline(cin, s);
	int e;
	cin >> e;
	getline(cin, tmp);
	set<string> rhymes;
	for (int i = 0; i < e; i++) {
		string l;
		getline(cin, l);
		auto ps = split(l);
		for (string p : ps) {
			if (isSuffix(s, p)) {
				rhymes.insert(ps.begin(), ps.end());
				break;
			}
		}
	}
	
	int n;
	cin >> n;
	getline(cin, tmp);
	
	for (int i = 0; i < n; i++) {
		string l;
		getline(cin, l);
		bool found = false;
		for (string r : rhymes)
			if (isSuffix(l, r))
				found = true;
		if (found)
			cout << "YES\n";
		else
			cout << "NO\n";
	}
}

Test details

Test 1

Verdict: ACCEPTED

input
doubt
2
aught ought aut acht
oubt out ought outte oute
5
...

correct output
YES
YES
NO
YES
NO

user output
YES
YES
NO
YES
NO

Test 2

Verdict: ACCEPTED

input
qgrqe
10
a blne bp bt cu cy e eqdetn gl...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 3

Verdict: ACCEPTED

input
hi
10
ahn b c ccf csbwgvhsyx e fqv g...

correct output
NO
NO
NO
YES
NO
...

user output
NO
NO
NO
YES
NO
...

Test 4

Verdict: ACCEPTED

input
joo
10
ck e ephxruuiv hwvne iyl j lrk...

correct output
YES
NO
NO
NO
YES
...

user output
YES
NO
NO
NO
YES
...

Test 5

Verdict: ACCEPTED

input
jsd
10
ahtj b cfu h i ip k kcntfmo kz...

correct output
YES
NO
NO
YES
YES
...

user output
YES
NO
NO
YES
YES
...

Test 6

Verdict: ACCEPTED

input
dg
10
a aauj d dxf elt f h j k km l ...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 7

Verdict: ACCEPTED

input
ez
10
a alth b c cf d flzia iam juc ...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 8

Verdict: ACCEPTED

input
irxe
10
a dvf guwnzdez hi hsjf ibpcm j...

correct output
YES
YES
YES
NO
YES
...

user output
YES
YES
YES
NO
YES
...

Test 9

Verdict: ACCEPTED

input
baa
3
aa bb cc dd
aa ee ff gg
aa hh ii jj
...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 10

Verdict: ACCEPTED

input
bad
1
bad mad sad
5
madbadsadwrong
...

correct output
NO
NO
NO
NO
NO

user output
NO
NO
NO
NO
NO

Test 11

Verdict: ACCEPTED

input
baa
10
aa ba ca da ea fa ga ha ia ja ...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 12

Verdict: ACCEPTED

input
asdasdasdasdasdasda
1
asdasdasdasdasdasda fdgdfgdfgd...

correct output
YES
YES
YES

user output
YES
YES
YES

Test 13

Verdict: ACCEPTED

input
b
1
a
1
a

correct output
NO

user output
NO