# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
28252 | Official Fan of ACG (#68) | Play Onwards (FXCUP2_onward) | C++14 | 249 ms | 2296 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<cstdio>
#include<string>
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
bool cmp(const string& A, const string& B, int K) {
for (int i = 0; i < A.size(); i++) for (int j = 0; j < B.size(); j++) {
bool cur = true;
for (int k = 0; k < K; k++) {
if (i + k >= A.size() || j + k >= B.size() || A[i + k] != B[j + k]) cur = false;
}
if (cur) return true;
}
return false;
}
string in[200];
vector<int> g[200];
int ans[200];
void dfs(int u) {
for (int v : g[u]) if (!ans[v]) {
ans[v] = 3 - ans[u];
dfs(v);
}
}
int main() {
int N, K; cin >> N >> K;
for (int i = 0; i < N; i++) cin >> in[i];
for (int i = 0; i < N; i++) for (int j = i + 1; j < N; j++) {
if (cmp(in[i], in[j], K)) {
g[i].push_back(j);
g[j].push_back(i);
}
}
int cur = 1;
for (int i = 0; i < N; i++) if (!ans[i]) {
ans[i] = cur;
dfs(i);
cur = 3 - cur;
}
for (int i = 0; i < N; i++) for (int j : g[i]) if (ans[i] == ans[j]) {
cout << "No";
return 0;
}
vector<int> A, B;
for (int i = 0; i < N; i++) if (ans[i] == 1) A.push_back(i); else B.push_back(i);
if (A.empty() || B.empty()) {
cout << "No";
return 0;
}
cout << "Yes" << endl;
for (int i = 0; i < N; i++) cout << ans[i] << endl;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |