Advertisement
fooker

P91B

May 9th, 2023
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. int main()
  5. {
  6.     ll n;
  7.     cin>>n;
  8.     stack<pair<ll,ll>> s;
  9.     for (ll i=1,x; i<=n; i++){
  10.         cin>>x;
  11.         s.push({x,i});
  12.     }
  13.     map<pair<ll,ll>,pair<ll,ll>> mp;
  14.     multiset<pair<ll,ll>> m;
  15.     while(!s.empty()){
  16.         ll a=s.top().first;
  17.         ll b=s.top().second;
  18.         s.pop();
  19.         m.insert({a,b});
  20.         auto it=m.find({a,b});
  21.         if (it==m.begin()){
  22.             mp[{a,b}]={-1,-1};
  23.         }
  24.         else {
  25.             it--;
  26.             mp[{a,b}]=*it;
  27.             it++;
  28.             m.erase(it);
  29.         }
  30.     }
  31.     ll ans[n+1];
  32.     for (auto u:mp){
  33.         if (u.second.first==-1){
  34.             ans[u.first.second]=-1;
  35.         }
  36.         else {
  37.             ans[u.first.second]=u.second.second-u.first.second-1;
  38.         }
  39.     }
  40.     for (ll i=1; i<=n; i++) cout<<ans[i]<<" ";
  41. }
  42.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement