2023 rcpc
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/// Banu Denis - monotone stack solution
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define ll long long
|
||||
#define ld long double
|
||||
#define ull unsigned long long
|
||||
#define pii pair<int,int>
|
||||
#define MOD 1000000007
|
||||
#define zeros(x) x&(x-1)^x
|
||||
#define fi first
|
||||
#define se second
|
||||
#define NMAX 200005
|
||||
const long double PI = acos(-1);
|
||||
|
||||
int n,k,ans[NMAX];
|
||||
deque<pii> bst;
|
||||
vector<pair<int, int> > v;
|
||||
|
||||
int main(){
|
||||
ios::sync_with_stdio(false);
|
||||
cin >> n >> k;
|
||||
for (int i=1;i<=n;i++) {
|
||||
int x;
|
||||
cin >> x;
|
||||
v.push_back({x, i});
|
||||
}
|
||||
sort(v.begin(), v.end());
|
||||
v.push_back({int(2e9) + 3, 0});
|
||||
|
||||
int st = 0, dr = -1;
|
||||
while (st < n) {
|
||||
while (v[st].first + k >= v[dr+1].first) dr++;
|
||||
while (!bst.empty() && bst.back().first <= dr-st+1) bst.pop_back();
|
||||
bst.push_back({dr-st+1, dr});
|
||||
while (!bst.empty() && bst.front().second < st) bst.pop_front();
|
||||
ans[v[st].second] = bst.front().first;
|
||||
st++;
|
||||
}
|
||||
|
||||
for (int i=1;i<=n;i++) cout << ans[i] << ' ';
|
||||
cout << '\n';
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user