제출 #940153

#제출 시각아이디문제언어결과실행 시간메모리
940153vjudge1Lottery (CEOI18_lot)C++17
45 / 100
3028 ms888 KiB
#include <bits/stdc++.h> using namespace std; //#define int long long #define all(x) x.begin(), x.end() #define size(x) (int)x.size() template<class S, class T> bool chmin(S &a, const T &b) { return a > b ? (a = b) == b : false; } template<class S, class T> bool chmax(S &a, const T &b) { return a < b ? (a = b) == b : false; } signed main() { cin.tie(nullptr)->sync_with_stdio(false); int n, l; cin >> n >> l; int a[n]; for (int i = 0; i < n; ++i) { cin >> a[i]; } int q; cin >> q; vector<pair<int, int>> qri(q); for (int i = 0; i < q; ++i) { cin >> qri[i].first; qri[i].second = i; } sort(all(qri)); int res[q][n]; for (int i = 0; i + l - 1 < n; ++i) { deque<int> x, y; for (int j = i; j < i + l; ++j) { x.push_back(a[j]); } for (int j = 0; j < l; ++j) { y.push_back(a[j]); } int cnt = 0; for (int k = 0; k < l; ++k) { if (x[k] != y[k]) cnt++; } vector<int> v; if (i) v.push_back(cnt); for (int j = l; j < n; ++j) { y.pop_front(); y.push_back(a[j]); if (j - l + 1 == i) continue; cnt = 0; for (int k = 0; k < l; ++k) { if (x[k] != y[k]) cnt++; } v.push_back(cnt); } sort(all(v)); int s = 0, t = 0, add = 0; while (t < q) { while (s < size(v) && v[s] <= qri[t].first) { add++; s++; } res[qri[t].second][i] = add; t++; } } for (int i = 0; i < q; ++i) { for (int j = 0; j + l - 1 < n; ++j) { cout << res[i][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...