Submission #1161154

#TimeUsernameProblemLanguageResultExecution timeMemory
1161154LudisseyLottery (CEOI18_lot)C++20
100 / 100
538 ms8288 KiB
#include <bits/stdc++.h> #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() using namespace std; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n,l,q; cin >> n >> l; vector<int> a(n); for (int i = 0; i < n; i++) cin >> a[i]; cin >> q; vector<pair<int,int>> qrs(q); vector<vector<int>> out(q,vector<int>(n,0)); for (int i = 0; i < q; i++) { cin >> qrs[i].first; qrs[i].second=i; } sort(all(qrs)); vector<pair<int,int>> cline(n); vector<int> cnt(l+1,0); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cline[j].second=(a[i]==a[j]); if(i>0&&j>0) cline[j].second+=cline[j-1].first; if(i>=l&&j>=l) cline[j].second-=(a[i-l]==a[j-l]); } for (int j = 0; j < n; j++) swap(cline[j].first,cline[j].second); if(i>=l-1){ for (int j = l-1; j < n; j++) cnt[cline[j].first]++; int csum=-1; int k=0; for (int j = 0; j <= l; j++) { while(j>qrs[k].first&&k<sz(qrs)) { out[qrs[k].second][i-l+1]=csum; k++; } csum+=cnt[l-j]; } while(l>=(l-qrs[k].first)&&k<sz(qrs)) { out[qrs[k].second][i-l+1]=csum; k++; } for (int j = 0; j < n; j++) cnt[cline[j].first]=0; } } for (int i = 0; i < q; i++) { for (int j = 0; j < n-l+1; j++) { cout << out[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...