Submission #163772

#TimeUsernameProblemLanguageResultExecution timeMemory
163772Alexa2001Lottery (CEOI18_lot)C++17
100 / 100
735 ms12484 KiB
#include <bits/stdc++.h> using namespace std; const int Nmax = 1e4 + 5, Qmax = 205; int a[Nmax], match[Nmax], where[Qmax]; pair<int,int> mat[Qmax]; int n, q, l; int ans[Nmax][Qmax]; void new_match(int x, int y, int mat) { ans[x][match[mat]] ++; ans[y][match[mat]] ++; } void prec(int d) { int i, dif = 0; for(i=1; i<=l; ++i) dif += (a[i] != a[d+i]); new_match(1, d+1, dif); for(i=l+1; i+d<=n; ++i) { dif += (a[i] != a[i+d]); dif -= (a[i-l] != a[i+d-l]); new_match(i-l+1, i+d-l+1, dif); } } int main() { // freopen("input", "r", stdin); cin.sync_with_stdio(false); cin.tie(0); cin >> n >> l; int i, j; for(i=1; i<=n; ++i) cin >> a[i]; cin >> q; for(i=1; i<=q; ++i) cin >> mat[i].first, mat[i].second = i; sort(mat+1, mat+q+1); for(i=0; i<=l; ++i) match[i] = lower_bound(mat+1, mat+q+1, make_pair(i, 0)) - mat; for(i=1; i<=n-l; ++i) prec(i); for(i=1; i<=n; ++i) for(j=1; j<=q; ++j) ans[i][j] += ans[i][j-1]; for(i=1; i<=q; ++i) where[mat[i].second] = i; for(i=1; i<=q; ++i) { for(j=1; j<=n-l+1; ++j) cout << ans[j][where[i]] << ' '; cout << '\n'; } 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...