Submission #13620

# Submission time Handle Problem Language Result Execution time Memory
13620 2015-02-25T13:18:52 Z tncks0121 Round words (IZhO13_rowords) C++14
24 / 100
185 ms 131072 KB
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <math.h>
#include <assert.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <algorithm>
#include <string>
#include <functional>
#include <vector>
#include <deque>
#include <utility>
#include <bitset>
#include <limits.h>
#include <time.h>

using namespace std;
typedef long long ll;
typedef unsigned long long llu;
typedef double lf;
typedef unsigned int uint;
typedef long double llf;
typedef pair<int, int> pii;

const int Z = 2050;

int N, M;
char S[Z], T[Z];

const int dx[] = { 0, -1, -1 };
const int dy[] = { -1, -1, 0 };

int tb[Z + Z][Z];
int par[Z + Z][Z];

int ans;

void solve() {
	for (int i = N + 1; i <= N + N; i++) S[i] = S[i - N];

	memset(par, -1, sizeof par);

	for (int i = 1; i <= N + N; i++) par[i][0] = 2;
	for (int j = 1; j <= M; j++) par[0][j] = 0;
	for (int i = 1; i <= N + N; i++) {
		for (int j = 1; j <= M; j++) {
			int cands[] = {
				tb[i][j - 1],
				tb[i - 1][j - 1] + (S[i] == T[j]),
				tb[i - 1][j]
			};
			tb[i][j] = *max_element(cands, cands + 3);
			par[i][j] = max_element(cands, cands + 3) - cands;
		}
	}


	for (int r = 1; r <= N; r++) {
		// drop the first row
			{
				int i = r;
				int j;
				for (j = 1; j <= M && par[r][j] != 1; j++);
				if (j <= M) {
					par[i][j] = 0;

					while (i < N + N && j <= M) {
						if (par[i + 1][j] == 2) ++i;
						else if (j == M) break;
						else if (par[i + 1][j + 1] == 1) ++i, ++j;
						else ++j;
						par[i][j] = 0;
					}
				}
			}

		// calc answer
		{
			int ret = 0;
			for (int i = N + r, j = M; i > r && j > 0;) {
				int d = par[i][j];
				if (d == 1) ++ret;
				i += dx[d]; j += dy[d];
			}
			ans = max(ans, ret);
		}
	}
}

int main() {
	scanf("%s%s", S + 1, T + 1);
	N = strlen(S + 1);
	M = strlen(T + 1);

	solve();
	reverse(T + 1, T + M + 1);
	solve();

	printf("%d\n", ans);
	return 0;
}

Compilation message

rowords.cpp: In function 'int main()':
rowords.cpp:97:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s%s", S + 1, T + 1);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 36 ms 33272 KB Output is correct
2 Correct 35 ms 33244 KB Output is correct
3 Correct 35 ms 33400 KB Output is correct
4 Correct 36 ms 33528 KB Output is correct
5 Incorrect 37 ms 33628 KB Output isn't correct
6 Correct 66 ms 41976 KB Output is correct
7 Correct 86 ms 48988 KB Output is correct
8 Incorrect 185 ms 49020 KB Output isn't correct
9 Incorrect 172 ms 49128 KB Output isn't correct
10 Incorrect 160 ms 49084 KB Output isn't correct
11 Runtime error 178 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 175 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 163 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 146 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 148 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 149 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 148 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
18 Runtime error 148 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
19 Incorrect 153 ms 49016 KB Output isn't correct
20 Runtime error 160 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
21 Runtime error 149 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
22 Runtime error 153 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
23 Runtime error 154 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
24 Runtime error 164 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)
25 Runtime error 152 ms 131072 KB Execution killed with signal 11 (could be triggered by violating memory limits)