| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 28327 | 슈퍼스타 tlwpdus (#68) | Play Onwards (FXCUP2_onward) | C++11 | 119 ms | 2292 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 <bits/stdc++.h>
using namespace std;
int n, k;
char str[210][22];
int len[210];
vector<int> lis[210];
int mlen(int n, char str[], int m, char ttr[]) {
	int i, j, k, res = 0;
	i = 0;
	for (j=0;j<m;j++) {
		int p = 0;
		for (k=0;k<m-j&&k<n-i;k++) {
			if (str[i+k]==ttr[j+k]) {
				res = max(res,k-p+1);
			}
			else {
				p = k+1;
			}
		}
	}
	j = 0;
	for (i=0;i<n;i++) {
		int p = 0;
		for (k=0;k<m-j&&k<n-i;k++) {
			if (str[i+k]==ttr[j+k]) {
				res = max(res,k-p+1);
			}
			else {
				p = k+1;
			}
		}
	}
	return res;
}
bool flag = 1;
int col[210];
void dfs(int here, int p, int c) {
	col[here] = c;
	for (auto &there : lis[here]) {
		if (col[there]) {
			if (col[there]==3-c) {
			}
			else {
				flag = 0;
			}
			continue;
		}
		dfs(there,here,3-c);
	}
}
int main() {
	int i, j;
	scanf("%d%d",&n,&k);
	for (i=0;i<n;i++) {
		scanf("%s",str[i]);
		len[i] = strlen(str[i]);
	}
	for (i=0;i<n;i++) {
		for (j=0;j<n;j++) {
			if (i==j) continue;
			if (mlen(len[i],str[i],len[j],str[j])>=k) {
				lis[i].push_back(j);
			}
		}
	}
	for (i=0;i<n;i++) {
		if (col[i]) continue;
		dfs(i,-1,1);
	}
	if (!flag) {
		printf("No\n");
		return 0;
	}
	int cnt[3] = {0,0,0};
	for (i=0;i<n;i++) {
		cnt[col[i]]++;
	}
	printf("Yes\n");
	if (cnt[1]==0) {
		printf("1\n");
		for (i=1;i<n;i++) printf("2\n");
	}
	else if (cnt[2]==0) {
		printf("2\n");
		for (i=1;i<n;i++) printf("1\n");
	}
	else {
		for (i=0;i<n;i++) printf("%d\n",col[i]);
	}
    return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
