Submission #470198

#TimeUsernameProblemLanguageResultExecution timeMemory
470198prvocisloLottery (CEOI18_lot)C++17
45 / 100
727 ms876 KiB
#include <iostream> #include <vector> #include <algorithm> #include <queue> typedef long long ll; using namespace std; const int maxn = 1e4 + 5, maxq = 105; int n, l, q; int a[maxn]; int d[2][maxn]; int sum[maxn]; int queries[maxq]; int ans[maxq][maxn]; int dif(int i, int j) { int cnt = 0; for (int k = 0; k < l; k++) cnt += (a[i + k] != a[j + k]); return cnt; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> l; for (int i = 0; i < n; i++) cin >> a[i]; cin >> q; for (int i = 0; i < q; i++) cin >> queries[i]; for (int i = 0; i + l - 1 < n; i++) d[0][i] = dif(0, i); for (int i = 0; i < n; i++) { fill(sum, sum + n, 0); int nw = i&1, pv = nw^1; if (i) { d[nw][0] = dif(i, 0); for (int j = 1; j + l - 1 < n; j++) d[nw][j] = d[pv][j-1] - (a[i-1] != a[j-1]) + (a[i+l-1] != a[j+l-1]); } for (int j = 0; j + l - 1 < n; j++) sum[d[nw][j]]++; for (int j = 1; j <= n; j++) sum[j] += sum[j-1]; for (int j = 0; j < q; j++) ans[j][i] = sum[queries[j]] - 1; } for (int i = 0; i < q; i++) for (int j = 0; j + l - 1 < n; j++) cout << ans[i][j] << " \n"[j + l - 1 == n - 1]; 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...