Submission #165469

# Submission time Handle Problem Language Result Execution time Memory
165469 2019-11-27T10:55:57 Z Sensei Zamjena (COCI18_zamjena) C++14
70 / 70
603 ms 35468 KB
#include <bits/stdc++.h>

using namespace std;

bool is_word (string st) {
	if (st[0] >= '0' && st[0] <= '9') {
		return false;
	}

	return true;
}

unordered_map<string, vector<int> > words1;
unordered_map<string, vector<int> > words2;


int main () {
	int N;
	cin >> N;

	vector<string> a(N + 1);
	vector<string> b(N + 1);

	for (int i = 1; i <= N; i++) {
		cin >> a[i];

		if (is_word(a[i])) {
			words1[a[i]].push_back(i);
		}
	}

	for (int i = 1; i <= N; i++) {
		cin >> b[i];

		if (is_word(b[i])) {
			words2[b[i]].push_back(i);
		}
	}

	for (int i = 1; i <= N; i++) {
		if (a[i] != b[i]) {
			if (is_word(a[i])) {
				string st = a[i];

				for (int id : words1[st]) {
					a[id] = b[i];
					words1[b[i]].push_back(id); 
				}

				words1[st].clear();

				for (int id : words2[st]) {
					b[id] = b[i];
					words2[b[i]].push_back(id);
				}

				words2[st].clear();
			}
			else if (is_word(b[i])) {
				string st = b[i];

				for (int id : words1[st]) {
					a[id] = a[i];
					words1[a[i]].push_back(id); 
				}

				words1[st].clear();

				for (int id : words2[st]) {
					b[id] = a[i];
					words2[a[i]].push_back(id);
				}

				words2[st].clear();	
			}
			else {
				cout << "NE" << "\n";
				return 0;
			}
		}
	}

	for (int i = 1; i <= N; i++) {
		if (a[i] != b[i]) {
			cout << "NE" << "\n";
			return 0;
		}
	}

	cout << "DA" << "\n";

	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 1256 KB Output is correct
2 Correct 4 ms 504 KB Output is correct
3 Correct 8 ms 1016 KB Output is correct
4 Correct 12 ms 1400 KB Output is correct
5 Correct 9 ms 1192 KB Output is correct
6 Correct 8 ms 984 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 68 ms 5496 KB Output is correct
2 Correct 62 ms 5456 KB Output is correct
3 Correct 181 ms 11384 KB Output is correct
4 Correct 102 ms 8952 KB Output is correct
5 Correct 603 ms 35468 KB Output is correct
6 Correct 150 ms 11128 KB Output is correct