Submission #872369

#TimeUsernameProblemLanguageResultExecution timeMemory
872369Darren0724Lottery (CEOI18_lot)C++17
100 / 100
550 ms12484 KiB
#include <bits/stdc++.h> using namespace std; #define LCBorz \ ios_base::sync_with_stdio(false); \ cin.tie(0); #define int long long #define all(x) x.begin(), x.end() #define x first #define y second //#define endl '\n' const int N=100005; const int INF=1e18; int32_t main() { LCBorz; int n,k;cin>>n>>k; vector<int> v(n); for(int i=0;i<n;i++){ cin>>v[i]; } int q;cin>>q; int ans[n+1][q+2]{}; vector<pair<int,int>> ask(q+2); for(int i=1;i<=q;i++){ cin>>ask[i].first; ask[i].second=i; } ask[0]={0,0}; ask[q+1]={n,n}; sort(all(ask)); int idx=1; for(int i=1;i<n;i++){ vector<int> a; //a.push_back(0); for(int j=0;j+i<n;j++){ a.push_back(v[j]!=v[i+j]); } int sz=a.size(); if(sz<k){ continue; } int cnt=0; for(int j=0;j<k;j++){ cnt+=a[j]; } //cout<<0<<' '<<i<<' '<<cnt<<endl; while(idx&&ask[idx-1].first>=cnt){ //cout<<"flag1"<<endl; idx--; } while(ask[idx].first<cnt){ //cout<<"flag2"<<endl; idx++; } ans[0][idx]++; ans[i][idx]++; for(int j=k;j<sz;j++){ cnt-=a[j-k]; cnt+=a[j]; while(idx&&ask[idx-1].first>=cnt){ //cout<<"flag1"<<endl; idx--; } while(ask[idx].first<cnt){ //cout<<"flag2"<<endl; idx++; } ans[j+1-k][idx]++; ans[i+j+1-k][idx]++; //cout<<j+1-k<<' '<<i+j+1-k<<' '<<cnt<<endl; } } for(int i=0;i<n;i++){ for(int j=1;j<=q;j++){ ans[i][j]+=ans[i][j-1]; } } vector<int> ans1(q+2); for(int i=1;i<=q;i++){ int now=0; for(int j=1;j<=q;j++){ if(ask[j].second==i){ now=j; break; } } for(int j=0;j<n-k+1;j++){ cout<<ans[j][now]<<' '; } cout<<endl; } 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...