Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #include <ext/pb_ds/assoc_container.hpp>
- using namespace __gnu_pbds;
- using namespace std;
- #define ff first
- #define ss second
- #define int long long
- #define pb push_back
- #define mp make_pair
- #define pii pair<int,int>
- #define vi vector<int>
- #define mii map<int,int>
- #define pqb priority_queue<int>
- #define pqs priority_queue<int,vi,greater<int> >
- #define setbits(x) __builtin_popcountll(x)
- #define zrobits(x) __builtin_ctzll(x)
- #define mod 1000000007
- #define inf 1e18
- #define ps(x,y) fixed<<setprecision(y)<<x
- #define mk(arr,n,type) type *arr=new type[n];
- #define w(x) int x; cin>>x; while(x--)
- mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- #define fastio ios_base::sync_with_stdio(0); cin.tie(0);
- //////// f is the solving function
- int f(int pos,vector<int> &a)
- {
- int ans1=-1e9,ans2=-1e9,n=a.size(),s=0,g=0;
- // case 1 left pointer to i
- for(int i=0;i<pos;i++){
- if(a[i]>a[pos]) g++;
- else if(a[i]<a[pos]) s++;
- }
- ans1=max(ans1,g-s);
- for(int i=n-1;i>pos;i--)
- {
- if(a[i]>a[pos]) g++;
- else if(a[i]<a[pos]) s++;
- ans1=max(ans1,g-s);
- }
- s=0;g=0;
- // case 2 right pointer to i
- for(int i=n-1;i>pos;i--){
- if(a[i]>a[pos]) g++;
- else if(a[i]<a[pos]) s++;
- }
- ans2=max(ans2,g-s);
- for(int i=0;i<pos;i++)
- {
- if(a[i]>a[pos]) g++;
- else if(a[i]<a[pos]) s++;
- ans2=max(ans2,g-s);
- }
- return max(ans1,ans2);
- }
- ///// solve is the driving function
- vector<int> solve(vector<int> &a)
- {
- int n=a.size();
- vector<int> ans(n);
- for(int i=0;i<n;i++) ans[i]=f(i,a);
- return ans;
- }
- int32_t main()
- {
- vi a = {1,2,5,4,3};
- vi ans=solve(a);
- for(auto x:ans) cout<<x<<" ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement