Flickyyy

B-B'1

Aug 30th, 2022
962
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define all(a) a.begin(), a.end()
  4. #define forn(i, a, b) for (ll i = a; i < b; i++)
  5. using ll = long long;
  6.  
  7. int main() {
  8.     ll n, k;
  9.     cin >> n >> k;
  10.     vector< pair<ll, ll> > vec(n);
  11.     vector<ll> inds(n);
  12.     forn(i, 0, n) {
  13.         cin >> vec[i].first;
  14.         vec[i].second = i + 1;
  15.     }
  16.     sort(all(vec));
  17.     reverse(all(vec));
  18.     forn(i, 0, n) {
  19.         inds[vec[i].second - 1] = i;
  20.     }
  21.     vector<ll> ans;
  22.     map<ll, ll> uses;
  23.     queue<pair<ll, ll>> q;
  24.     forn(i, 0, n) {
  25.         if (q.empty() or q.front().first - vec[i].first < k) {
  26.             //unique solution
  27.             ans.push_back(0);
  28.         }
  29.         else {
  30.             ans.push_back(q.front().second);
  31.             if (++uses[q.front().second] == 2) {
  32.                 q.pop();
  33.             }
  34.         }
  35.         q.push(vec[i]);
  36.     }
  37.     if (count(all(ans), 0) > 1) {
  38.         cout << -1;
  39.     }
  40.     else {
  41.         forn(i, 0, n) {
  42.             cout << ans[inds[i]] << ' ';
  43.         }
  44.     }
  45.     cout << endl;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment