Submission #1162489

#TimeUsernameProblemLanguageResultExecution timeMemory
1162489simona1230Lottery (CEOI18_lot)C++20
45 / 100
156 ms131072 KiB
#include <bits/stdc++.h> using namespace std; int n,l; int a[200001]; int q,k[200001]; void read() { cin>>n>>l; for(int i=1;i<=n;i++) cin>>a[i]; cin>>q; for(int i=1;i<=q;i++) cin>>k[i]; } map<int,vector<int> > id; struct itv { int l,r,v; itv(){} itv(int _l,int _r,int _v) { l=_l; r=_r; v=_v; } }; vector<itv> v; int d[2001][2001]; int act[2001]; vector<int> rem[2001]; bool cmp(itv i1,itv i2) { return i1.r<i2.r; } bool cmp2(itv i1,itv i2) { return i1.v<i2.v; } int ans[2001][2001]; void prec() { for(int i=1;i<=n;i++) { for(int j=0;j<id[a[i]].size();j++) { int li=id[a[i]][j]; //cout<<li-l+1<<" "<<li<<endl; v.push_back({max(1,li-l+1),li,i-li}); } id[a[i]].push_back(i); } sort(v.begin(),v.end(),cmp); int j=0; for(int i=1;i<=n;i++) { while(j<v.size()&&v[j].l<=i) { act[v[j].v]++; rem[v[j].r].push_back(v[j].v); j++; } //cout<<i<<": "; for(int x=1;x<=n;x++) { //cout<<act[x]<<" "; if(act[x])d[i][i+x]-=act[x]; } //cout<<endl; for(int x=0;x<rem[i].size();x++) { act[rem[i][x]]--; } } for(int i=1;i<=n-l+1;i++) { for(int x=i+1;x<=n-l+1;x++) { d[i][x]+=l; ans[i][d[i][x]]++; ans[x][d[i][x]]++; //cout<<i<<" "<<x<<" "<<d[i][x]<<endl; } } for(int i=0;i<=l;i++) { for(int x=1;x<=n;x++) { ans[x][i]+=ans[x][i-1]; } } for(int i=1;i<=q;i++) { for(int x=1;x<=n-l+1;x++) cout<<ans[x][k[i]]<<" "; cout<<endl; } } int main() { read(); prec(); 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...