結果
| 問題 |
No.263 Common Palindromes Extra
|
| コンテスト | |
| ユーザー |
deryuderyuyo
|
| 提出日時 | 2015-08-16 20:42:17 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,067 bytes |
| コンパイル時間 | 229 ms |
| コンパイル使用メモリ | 35,816 KB |
| 実行使用メモリ | 13,756 KB |
| 最終ジャッジ日時 | 2024-07-18 09:55:05 |
| 合計ジャッジ時間 | 9,725 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 TLE * 2 -- * 8 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:8:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
8 | scanf("%s %s", S, T);
| ~~~~~^~~~~~~~~~~~~~~
ソースコード
char S[500002], T[500002];
#include<cstdio>
#include<list>
int main() {
int n = 0, d, e, f, g;
std::list<int> P;
auto it(std::begin(P));
scanf("%s %s", S, T);
for (f = 0; S[f]; f++) {
P.clear();
for (g = 0; T[g]; g++) {
if (T[g] == S[f]) {
P.push_back(g);
n++;
}
}
for (d = 1; !P.empty() && d <= f && S[f - d] == S[f + d]; d++) {
for (it = std::begin(P); it != std::end(P);) {
e = *it;
if (e >= d && S[f - d] == T[e - d] && S[f + d] == T[e + d]) {
n++;
it++;
}
else {
it = P.erase(it);
}
}
}
}
for (f = 0; S[f]; f++) {
if (S[f] == S[f + 1]) {
P.clear();
for (g = 0; T[g]; g++) {
if (S[f] == T[g] && S[f + 1] == T[g + 1]) {
P.push_back(g);
n++;
}
}
for (d = 1; !P.empty() && d <= f && S[f - d] == S[f + d+1]; d++) {
for (it = std::begin(P); it != std::end(P);) {
e = *it;
if (e >= d && S[f - d] == T[e - d] && S[f + d+1] == T[e + d+1]) {
n++;
it++;
}
else {
it = P.erase(it);
}
}
}
}
}
printf("%d\n", n);
}
deryuderyuyo