#define _USE_MATH_DEFINES // M_PI等のフラグ #include #define MOD 1000000007 #define COUNTOF(array) (sizeof(array)/sizeof(array[0])) #define rep(i,n) for (int i = 0; i < (n); ++i) #define intceil(a,b) ((a+(b-1))/(b)) using namespace std; using ll = long long; using pii = pair; using pll = pair; const long long INF = LONG_LONG_MAX - 1001001001001001; void chmax(ll& x, ll y) { x = max(x,y); } void chmin(ll& x, ll y) { x = min(x,y); } string vs = "URDL"; // 上右下左 vector vy = { -1, 0, 1, 0 }; vector vx = { 0, 1, 0, -1 }; /***ローリングハッシュ法で文字列検索 * 計算量はO(N+M) ***/ const unsigned long long B = 100000007; // ハッシュの基数 /***文字列s1はs2に含まれているか? * Returns: * 含まれている場合、一致箇所の開始位置であるs2のインデックスを返す * 含まれていなかった場合、-1を返す **/ long long contain(string s1, string s2) { long long s1_len = s1.length(); long long s2_len = s2.length(); if (s1_len > s2_len) return -1; // Bのs1_len乗を計算する unsigned long long t = 1; for (long long i=0; i> S; ll M; cin >> M; vector C(M); for(ll i=0; i> C[i]; } // ローリングハッシュで文字列検索する ll ans = 0; for(ll i=0; i= (ll)S.size()) break; } } cout << ans << endl; } int main() { solve(); return 0; }