Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Task : _example
- Author : Phumipat C. [MAGCARI]
- Language: C++
- Created : 26 September 2022 [12:43]
- Algo :
- Status :
- */
- #include<bits/stdc++.h>
- #define rep(i, a, b) for(int i = a; i <= (b); ++i)
- #define repr(i, a, b) for(int i = a; i >= (b); --i)
- #define repl(i, a, b) for(LL i = a; i <= (b); ++i)
- #define reprl(i, a, b) for(LL i = a; i >= (b); --i)
- #define all(x) begin(x),end(x)
- #define allst(x,y) (x).begin()+y,(x).end()
- #define rmdup(x) sort(all(x)),(x).resize(unique((x).begin(),(x).end())-(x).begin())
- #define sz(x) (int)(x).size()
- #define decp(x) fixed << setprecision(x)
- #define MOD (LL )(1e9+7)
- using namespace std;
- using LL = long long;
- using PII = pair<int ,int >;
- using PLL = pair<long long ,long long >;
- const int dir4[2][4] = {{1,-1,0,0},{0,0,1,-1}};
- const int dir8[2][8] = {{-1,-1,-1,0,1,1,1,0},{-1,0,1,1,-1,0,1,-1}};
- LL modN(LL a,LL b,LL c = MOD){
- if(b == 0) return 1;
- if(b == 1) return a%c;
- LL now = modN(a,b/2,c);
- if(b&1) return (((now*now)%c)*(a%c))%c;
- else return (now*now)%c;
- }
- const int N = 1000010;
- int tree[4*N],a[N];
- void upd(int l,int r,int now,int idx,int v){
- if(l>idx || r<idx) return ;
- if(l == r){
- tree[now]+=v;
- return ;
- }
- int mid = (l+r)/2;
- upd(l,mid,now*2,idx,v);
- upd(mid+1,r,now*2+1,idx,v);
- tree[now] = tree[now*2]+tree[now*2+1];
- }
- int read(int l,int r,int now,int len){
- if(l == r) return l;
- int mid = (l+r)/2;
- if(len<=tree[now*2]) return read(l,mid,now*2,len);
- else return read(mid+1,r,now*2+1,len-tree[now*2]);
- }
- void init(){
- }
- void solve(){
- int n,w;
- cin >> n >> w;
- for(int i=1;i<=n;i++)
- cin >> a[i];
- for(int i=1;i<=n;i++){
- upd(1,N,1,a[i],1);
- if(i<=w) continue;
- cout << read(1,N,1,w/2+1) << ' ';
- upd(1,N,1,a[i-w],-1);
- }
- }
- int main(){
- cin.tie(0)->sync_with_stdio(0);
- cin.exceptions(cin.failbit);
- // freopen("d:/Code/C_Programming/input.in","r",stdin);
- init();
- int q = 1;
- // cin >> q;
- for(int Q=1;Q<=q;Q++){
- // cout << "Case #" << Q << ": ";
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement