#include "elephants.h"
#include <bits/stdc++.h>
using namespace std;
int n;
int sz=40;
int b[150001][55];
multiset<int> s;
int l;
int p[150001];
int id=1;
void init(int N, int L, int X[])
{
    l=L;
    for(int i=0;i<N;i++)
    {
        s.insert(X[i]);
        p[i]=X[i];
    }
    /*auto it=s.end();
    for(int i=N-1;i>=0;i--)
    {
        it--;
        mp[*it]=i;
        int x=N-2*i+1;
        for(int j=x+1;j<=sz;j++)
            b[i][j]=1e9;
        auto it1=s.lower_bound(*it+L);
        it1++;
        if(it1==s.end()||mp[*it1]-i+1>=sz)
        {
            for(int j=1;j<=x;j++)
                b[i][j]=1;
            continue;
        }
        int y=mp[*it1];
        y=mp[y];
    }*/
}
map<int,int> mp,r;
int update(int i, int y)
{
    int pr=p[i];
    id++;
    s.erase(s.find(p[i]));
    s.insert(y);
    p[i]=y;
    int ans=0,z=0;
    vector<int> g;
    auto it=s.begin();
    while(it!=s.end())
    {
        int x=*it+l;
        //cout<<*it<<" ";
        if(mp[*it]==id-1&&*it>y&&*it>pr)
        {
            //cout<<"in "<<endl;
            z=r[*it];
            break;
        }
        g.push_back(*it);
        ans++;
        it=s.upper_bound(x);
    }
    //cout<<endl;
    int curr=z;
    for(int i=g.size()-1;i>=0;i--)
    {
        curr++;
        mp[g[i]]=id;
        r[g[i]]=curr;
    }
    return ans;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |