結果

問題 No.430 文字列検索
ユーザー h_noson
提出日時 2017-07-25 23:25:56
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,591 bytes
コンパイル時間 874 ms
コンパイル使用メモリ 91,564 KB
最終ジャッジ日時 2025-01-05 01:49:45
ジャッジサーバーID
(参考情報)
judge3 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 7 WA * 7
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <algorithm>
#include <iomanip>
#include <cassert>
using namespace std;
#define GET_ARG(a,b,c,F,...) F
#define REP3(i,s,e) for (i = s; i <= e; i++)
#define REP2(i,n) REP3 (i,0,(int)(n)-1)
#define REP(...) GET_ARG (__VA_ARGS__,REP3,REP2) (__VA_ARGS__)
#define RREP3(i,s,e) for (i = s; i >= e; i--)
#define RREP2(i,n) RREP3 (i,(int)(n)-1,0)
#define RREP(...) GET_ARG (__VA_ARGS__,RREP3,RREP2) (__VA_ARGS__)
#define DEBUG(x) cerr << #x ": " << x << endl
int z[10], a[10];
int main(void) {
int m;
string s;
cin >> s >> m;
int ans = 0;
while (m--) {
string c;
cin >> c;
int i, j, k, n = c.size();
if (n > s.size()) continue;
z[n-1] = n;
for (i = n-2, j = 0; i >= 0; ) {
for (; i-j >= 0 && c[i-j] == c[n-1-j]; j++);
z[i] = j;
if (j == 0) {
i--;
continue;
}
for (k = 1; i-k >= 0 && n - 1 - k - z[n-1-k] > j; k++) z[i-k] = z[n-1-k];
i -= k; j -= k;
}
REP (i,n-1) a[n-1-z[i]] = n-1-i;
a[n-1] = 1;
RREP (i,n-1) if (a[i] == 0) a[i] = a[i+1];
for (i = 0; i <= s.size() - c.size(); ) {
for (j = c.size()-1; j >= 0; j--) {
if (s[i+j] != c[j]) break;
}
if (j < 0) {
ans++;
i += a[0];
}
else {
i += a[j];
}
}
}
cout << ans << endl;
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0