Submission #824858

#TimeUsernameProblemLanguageResultExecution timeMemory
824858farukLottery (CEOI18_lot)C++17
100 / 100
1450 ms8372 KiB
#include <bits/stdc++.h> #define mp make_pair using namespace std; typedef long long ll; typedef pair<int, int> pii; int n, l; void shift_forward(vector<int> &arr) { for (int i = 2 * n - 1; i > 0; i--) arr[i] = arr[i - 1]; arr[0] = 0; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> l; vector<int> arr(n); for (int i = 0; i < n; i++) cin >> arr[i]; int q; cin >> q; vector<int> vals(q); for (int Q = 0; Q < q; Q++) { cin >> vals[Q]; } vector<vector<int> > mat(q, vector<int>(n, 0)); vector<int> csum(n + 1, 0); vector<int> diff(2 * n, 0); for (int i = 0; i < l; i++) { for (int j = 0; j < n; j++) { if (arr[i] != arr[j]) diff[j - i + n]++; } } for (int j = 0; j <= n - l; j++) csum[diff[j + n]]++; csum[0]--; for (int j = 1; j < n; j++) csum[j] += csum[j - 1]; for (int j = 0; j < q; j++) mat[j][0] = csum[vals[j]]; for (int i = 1; i <= n - l; i++) { for (int j = 0; j < n; j++) if (arr[i - 1] != arr[j]) diff[j + n]--; shift_forward(diff); for (int j = 0; j < n; j++) if (arr[i + l - 1] != arr[j]) diff[j + 1 - l + n]++; fill(csum.begin(), csum.end(), 0); for (int j = 0; j <= n - l; j++) csum[diff[j + n]]++; csum[0]--; for (int j = 1; j < n; j++) csum[j] += csum[j - 1]; for (int j = 0; j < q; j++) mat[j][i] = csum[vals[j]]; } for (int Q = 0; Q < q; Q++) { cout << mat[Q][0]; for (int i = 1; i <= n - l; i++) cout <<" " << mat[Q][i]; 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...