Submission #967706

#TimeUsernameProblemLanguageResultExecution timeMemory
967706Charizard2021Lottery (CEOI18_lot)C++17
100 / 100
567 ms6732 KiB
#include<bits/stdc++.h> using namespace std; int main(){ int n, l; cin >> n >> l; vector<int> a(1 + n); for(int i = 1; i <= n; i++){ cin >> a[i]; } int q; cin >> q; vector<int> queries(1 + q); vector<int> orig(1 + q); for(int i = 1; i <= q; i++){ cin >> queries[i]; orig[i] = queries[i]; } sort(queries.begin(), queries.end()); vector<short> idx(1 + l); int cur = 1; for(int i = 0; i <= l; i++){ while(cur <= q && queries[cur] < i){ cur++; } idx[i] = cur; } vector<vector<short> > A(n - l + 2, vector<short>(1 + q, 0)); for(int j = 1; j <= n - l; j++){ int curDiff =0 ; for(int i = 0; i < l; i++){ if(a[1 + i] != a[j + 1 + i]){ curDiff++; } } if(queries.back() >= curDiff){ A[1][idx[curDiff]]++; A[j + 1][idx[curDiff]]++; } for(int cur = 2; cur + j <= n - l + 1; cur++){ if(a[cur - 1] != a[cur - 1 + j]){ curDiff--; } if(a[cur + l - 1] != a[cur + l - 1 + j]){ curDiff++; } if(queries.back() >= curDiff){ A[cur][idx[curDiff]]++; A[j + cur][idx[curDiff]]++; } } } for(int i = 1; i <= n - l + 1; i++){ for(int j = 1; j <= q; j++){ A[i][j] += A[i][j - 1]; } } for(int j = 1; j <= q; j++){ for(int i = 1; i <= n - l + 1; i++){ cout << A[i][idx[orig[j]]] << " "; } cout << "\n"; } }
#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...