Submission #249553

#TimeUsernameProblemLanguageResultExecution timeMemory
249553VEGAnnKlavir (COCI17_klavir)C++14
96 / 160
1091 ms4632 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 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 md = int(1e9) + 7; int a[M], n, m, ans[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]; ans[0] = 0; for (int i = 1; i <= m; i++){ ans[i] = mult(n, sum(ans[i - 1], 1)); for (int j = 1; j <= n; j++) if (a[i] != j){ int mx = 0; for (int len = i - 1; len > 0; len--){ if (a[len] != j) continue; bool ok = 1; for (int it = 1; it < len && ok; it++) ok &= bool(a[i - it] == a[len - it]); if (ok){ mx = len; break; } } ans[i] = sub(ans[i], ans[mx]); } cout << 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...