Language: C++

#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// #include <ext/pb_ds/detail/standard_policies.hpp>
#define ll  long long 
#define ull unsigned long long int
#define boost ios_base::sync_with_stdio(false);    cin.tie(NULL);    cout.tie(NULL)
#define vi vector<int>
#define P push_back
#define F first
#define S second
#define debug(x) cout<<x<<" "
#define pi vector<pair<int,int> >
#define all(a) a.begin(),a.end()
#define int ll
using namespace std;
// using namespace __gnu_pbds;
// typedef tree <int, null_type,less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
ll const mod=1e9+7;
int powi(int i,int b){
    int res=1;
    while(b){
        if(b&1)res*=i,res%=mod;
        b>>=1;
        i*=i;
        i%=mod;
    }
    return res;
}
// map<int,int> m;
// ll fact(int n){
//     //if(n==0)return 0;
//     if(n<=1)return 1;
//     if(m[n]!=0)return m[n];
//     return m[n]=(n*fact(n-1))%mod;
// }
// int ncr(int n,int r){
//     int h=fact(n);
//     int v=fact(r);
//     int j=fact(n-r);
//     v*=j;
//     v%=mod;
//     v=powi(v,mod-2);
//     return (h*v)%mod;
// }
// vi ar(2002);
// int root(int a){
//     if(ar[a]==a)return a;
//     return ar[a]=root(ar[a]);
// }
// void merge(int a,int b){
//     int h=root(a),j=root(b);
//     if(h!=j){
//         ar[h]=j;
//     }
// }
void solve(){
    int n,m,v,p;
    cin>>n>>m>>v>>p;
    vi b(n);
    vi a;
    map<int,int> m;
    for(int i=0;i<n;i++){
        cin>>b[i];
        m[b[i]]++;
        if(m[b[i]]==1){
            a.P(i);
        }
    }
    sort(a.rbegin(),a.rend());
    int cnt=0,ans=0,lst=0;
    //vi tp;
    for(int i=0;i<a.size();i++){
        if(cnt<p){
            //tp.P(a[i]);
            ans+=m[a[i]];
            if(cnt==p-1)lst=a[i];
            cnt++;
            continue;
        }
        if(lst<=a[i]+m&&n-i+p-1>=v){
            ans+=m[a[i]];continue;
        }
    }
    cout<<ans;
}
signed main(){
    //boost;
    int t=1;
    //cin>>t;
    for(int _=1;_<=t;_++){
        //cout<<"Case #"<<_<<": ";
        solve();
        cout<<"\n";
    }
    
    return 0;
}

Compiler output:
a.cc: In function 'void solve()':
a.cc:62:18: error: conflicting declaration 'std::map<long long int, long long int> m'
   62 |     map<int,int> m;
      |                  ^
a.cc:58:11: note: previous declaration as 'long long int m'
   58 |     int n,m,v,p;
      |           ^
a.cc:65:10: error: invalid types 'long long int[__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type {aka long long int}]' for array subscript
   65 |         m[b[i]]++;
      |          ^
a.cc:66:13: error: invalid types 'long long int[__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type {aka long long int}]' for array subscript
   66 |         if(m[b[i]]==1){
      |             ^
a.cc:76:19: error: invalid types 'long long int[__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type {aka long long int}]' for array subscript
   76 |             ans+=m[a[i]];
      |                   ^
a.cc:82:19: error: invalid types 'long long int[__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type {aka long long int}]' for array subscript
   82 |             ans+=m[a[i]];continue;
      |                   ^