Submission #1282775

#TimeUsernameProblemLanguageResultExecution timeMemory
1282775julia_08Lottery (CEOI18_lot)C++20
60 / 100
225 ms4936 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 1e4 + 10; const int MAXQ = 110; int a[MAXN]; int ans[MAXN][MAXQ]; int k[MAXN], ind[MAXQ]; int main(){ cin.tie(0)->sync_with_stdio(0); int n, l; cin >> n >> l; for(int i=1; i<=n; i++) cin >> a[i]; int q; cin >> q; vector<int> queries; for(int i=0; i<q; i++){ int x; cin >> x; k[i] = l - x; queries.push_back(k[i]); } sort(queries.begin(), queries.end()); queries.erase(unique(queries.begin(), queries.end()), queries.end()); for(int i=0; i<q; i++){ ind[i] = lower_bound(queries.begin(), queries.end(), k[i]) - queries.begin(); } for(int d=1; d<n; d++){ int p = 0; int sum = 0, id = -1; for(int i=1; i<=(n - l + 1 - d); i++){ while(p < i + l - 1){ p ++; if(p + d <= n) sum += (a[p] == a[p + d]); if(id + 1 < (int) queries.size()) if(sum >= queries[id + 1]) id ++; } if(id >= 0){ ans[i][id] ++; ans[i + d][id] ++; } if(i + d <= n) sum -= (a[i] == a[i + d]); if(id >= 0) if(sum < queries[id]) id --; } } for(int i=1; i<=n; i++){ for(int j=((int) queries.size() - 2); j>=0; j--){ ans[i][j] += ans[i][j + 1]; } } for(int i=0; i<q; i++){ for(int j=1; j<=(n - l + 1); j++) cout << ans[j][ind[i]] << " "; 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...