제출 #918276

#제출 시각아이디문제언어결과실행 시간메모리
918276amirhoseinfar1385Lottery (CEOI18_lot)C++17
100 / 100
552 ms8440 KiB
#include<bits/stdc++.h> using namespace std; const int maxn=10000+5,maxq=100+2; int q,n,l,dp[2][maxn],all[maxn],res[maxn][maxq],nx[maxn]; vector<int>allq,asly; int main(){ cin>>n>>l; for(int i=1;i<=n;i++){ cin>>all[i]; } cin>>q; allq.resize(q); asly.resize(q); for(int i=0;i<q;i++){ cin>>asly[i]; allq[i]=asly[i]; } sort(allq.begin(),allq.end()); allq.resize(unique(allq.begin(),allq.end())-allq.begin()); for(int i=0;i<maxn;i++){ int p=lower_bound(allq.begin(),allq.end(),i)-allq.begin(); nx[i]=p; } for(int i=1;i<=n;i++){ for(int j=0;j<=n;j++){ swap(dp[0][j],dp[1][j]); } for(int j=0;j<i;j++){ if(j==0){ dp[1][j]=l; continue; } dp[1][j]=dp[0][j-1]; if(all[i]!=all[j]){ dp[1][j]++; } if((j-1)-l+1<1||all[(j-1)-l+1]!=all[(i-1)-l+1]){ dp[1][j]--; } if(j>=l){ res[j][nx[dp[1][j]]]++; res[i][nx[dp[1][j]]]++; } //cout<<i<<" "<<j<<" "<<dp[1][j]<<"\n"; } } for(int i=1;i<=n;i++){ for(int j=1;j<q;j++){ res[i][j]+=res[i][j-1]; } } for(int i=0;i<q;i++){ int p=lower_bound(allq.begin(),allq.end(),asly[i])-allq.begin(); for(int j=l;j<=n;j++){ cout<<res[j][p]<<" "; } cout<<"\n"; } }
#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...