Submission #1193943

#TimeUsernameProblemLanguageResultExecution timeMemory
1193943anmattroiLottery (CEOI18_lot)C++17
100 / 100
367 ms8320 KiB
#include <bits/stdc++.h> #define maxn 10005 using namespace std; int n, l; int a[maxn]; int rtGames[maxn]; int kq[105][maxn]; int queries[maxn], q, ans[maxn]; int s[maxn]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cin >> n >> l; for (int i = 1; i <= n; i++) cin >> a[i]; cin >> q; for (int i = 1; i <= q; i++) cin >> queries[i]; for (int i = 0; i < l; i++) for (int j = 2; j <= n-l+1; j++) rtGames[j] += (a[1+i] == a[j+i]); for (int i = 1; i <= q; i++) for (int j = 2; j <= n-l+1; j++) kq[i][1] += (l-rtGames[j] <= queries[i]); for (int i = 1; i <= n; i++) ans[i] = rtGames[i]; for (int i = 2; i <= n-l+1; i++) { int cr = ans[i]; for (int j = n-l+1; j >= 2; j--) ans[j] = ans[j-1]; ans[i-1] = cr; ans[1] = rtGames[i]; for (int j = 2; j <= n-l+1; j++) { if (j == i || j == i-1) continue; ans[j] -= (a[i-1] == a[j-1]); ans[j] += (a[i+l-1] == a[j+l-1]); } for (int j = 0; j <= l; j++) s[j] = 0; for (int j = 1; j <= n-l+1; j++) if (i != j) ++s[l-ans[j]]; for (int j = 1; j <= l; j++) s[j] += s[j-1]; for (int j = 1; j <= q; j++) kq[j][i] += s[queries[j]]; } for (int i = 1; i <= q; i++) { for (int j = 1; j <= n-l+1; j++) cout << kq[i][j] << ' '; cout << "\n"; } } /* 6 2 1 2 1 3 2 1 2 1 2 */
#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...