Submission #1232408

#TimeUsernameProblemLanguageResultExecution timeMemory
1232408Hamed_GhaffariLottery (CEOI18_lot)C++20
25 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; const int MXN = 1003, MXQ = 103; int n, l, q, a[MXN], ans[MXQ][MXN], k[MXQ], ord[MXQ], dp[MXN], cnt[MXN]; inline int dif(int x, int y) { int res = 0; if(x>0 && y>0 && a[x-1]!=a[y-1]) res--; if(a[x+l-1]!=a[y+l-1]) res++; if(x==0 || y==0) for(int i=0; i+1<l; i++) res += a[x+i]!=a[y+i]; return res; } int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> n >> l; for(int i=0; i<n; i++) cin >> a[i]; cin >> q; for(int i=0; i<q; i++) { cin >> k[i]; ord[i] = i; } sort(ord, ord+q, [&](int i, int j) { return k[i] < k[j]; }); for(int i=0; i<n-l+1; i++) { fill(cnt, cnt+l+1, 0); for(int j=n-l; j>=0; j--) cnt[dp[j] = dif(i, j) + (j?dp[j-1]:0)]++; int ptr=0, sum=0; for(int j=0; j<q; j++) { while(ptr<=k[ord[j]]) sum += cnt[ptr++]; ans[ord[j]][i] = sum-1; } } for(int i=0; i<q; i++) { for(int j=0; j<n-l+1; j++) cout << ans[i][j] << ' '; 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...