Submission #249547

#TimeUsernameProblemLanguageResultExecution timeMemory
249547VEGAnnKlavir (COCI17_klavir)C++14
0 / 160
164 ms65540 KiB
#include <bits/stdc++.h> //#pragma GCC optimize("unroll-loops") //#pragma GCC optimize("-O3") //#pragma GCC optimize("Ofast") //#pragma GCC optimize("no-stack-protector") //#pragma GCC optimize("fast-math") #define PB push_back #define all(x) x.begin(),x.end() #define sz(x) ((int)x.size()) using namespace std; typedef long long ll; const int M = 1000100; const int N = 110; const int md = int(1e9) + 7; vector<int> who[M]; int a[M], n, m, ans[M], pf[M], bb[M]; int aut[M]; int mult(int x, int y) { return (1ll * x * y) % md; } int sum(int x, int y){ x += y; if (x >= md) x -= md; return x; } int sub(int x, int y){ x -= y; if (x < 0) x += md; return x; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef _LOCAL freopen("in.txt","r",stdin); #endif // _LOCAL cin >> n >> m; for (int i = 1; i <= m; i++) { cin >> a[i]; bb[i - 1] = a[i]; } ans[0] = 0; pf[0] = 0; for (int i = 1; i < m; i++){ int j = pf[i - 1]; while (j > 0 && bb[i] != bb[j]) j = pf[j - 1]; if (bb[i] == bb[j]) j++; pf[i] = j; } for (int j = 1; j <= n; j++){ aut[0] = bool(a[1] == 1); for (int i = 1; i <= m; i++) { if (j == bb[i - 1]) aut[i] = i; else { aut[i] = aut[pf[i]]; if (aut[i] > 0) who[aut[i]].PB(i); } } } for (int i = 1; i <= m; i++){ ans[i] = n; ans[i] = sum(ans[i], mult(n, ans[i - 1])); cout << ans[i] << '\n'; for (int j : who[i]) ans[j] = sub(ans[j], ans[i]); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...