#include "rotate.h"
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define speedIO ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
//#define mod 1000000007
#define f first
#define s second
#define pii pair<int,int>
#define pb push_back
const int M=50000;
vector<int> final;
void energy(int n, vector<int> v){
set<pii> a;
map<pii,int> b;
vector<pii> tmp(n);
for(int i=0;i<n;i++){
a.insert({v[i],i});
tmp[i]={v[i],i};
}
sort(tmp.begin(),tmp.end());
for(int i=0;i<n;i++){
b[{tmp[i].f,tmp[i].s}]=i;
//cout<<tmp[i].f<<' '<<tmp[i].s<<'\n';
}
vector<bool> marked(n,false);
int idx=0;
while(idx<n and !a.empty()){
if(marked[idx]){
//cout<<"hi\n";
idx++;
continue;
}
if(tmp[idx].f<M/2){
auto it=a.upper_bound({tmp[idx].f+M/2,1e9}); // atmost v[i]+90
it--;
pii sigh=*it;
//cout<<sigh.s<<" plsplsplswork\n";
if(b[sigh]-idx>=(n)/2){
//cout<<"piuhperihgveirjv\n";
vector<int> wow={tmp[idx].s};
rotate(wow,tmp[b[sigh]].f+M/2-tmp[idx].f);
a.erase({tmp[idx].f,tmp[idx].s});
a.insert({tmp[b[sigh]].f+M/2,tmp[idx].s});
tmp[idx].f=tmp[b[sigh]].f+M/2;
marked[b[sigh]]=true;
}else{
//cout<<"wpoejfpwepfo\n";
vector<int> wow={tmp[idx].s};
rotate(wow,tmp[(b[sigh]+1)%n].f+M/2-tmp[idx].f);
a.erase({tmp[idx].f,tmp[idx].s});
a.insert({tmp[(b[sigh]+1)%n].f+M/2,tmp[idx].s});
tmp[idx].f=tmp[(b[sigh]+1)].f+M/2;
marked[(b[sigh]+1)%n]=true;
}
}else{
auto it=a.lower_bound({tmp[idx].f-M/2,0}); // atleast v[i]+90
pii sigh=*it;
if(idx-b[sigh]>=(n)/2){
vector<int> wow={tmp[idx].s};
rotate(wow,tmp[b[sigh]].f+M/2-tmp[idx].f);
a.erase({tmp[idx].f,tmp[idx].s});
a.insert({tmp[b[sigh]].f+M/2,tmp[idx].s});
tmp[idx].f=tmp[b[sigh]].f+M/2;
marked[b[sigh]]=true;
}else{
vector<int> wow={tmp[idx].s};
rotate(wow,tmp[(b[sigh]-1)%n].f+M/2-tmp[idx].f);
a.erase({tmp[idx].f,tmp[idx].s});
a.insert({tmp[(b[sigh]-1)%n].f+M/2,tmp[idx].s});
tmp[idx].f=tmp[(b[sigh]-1)].f+M/2;
marked[(b[sigh]-1)%n]=true;
}
}
marked[idx]=true;
idx++;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |