Submission #1209690

#TimeUsernameProblemLanguageResultExecution timeMemory
1209690LudisseyRotating Lines (APIO25_rotate)C++20
100 / 100
73 ms8008 KiB
#include "rotate.h" #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <bits/stdc++.h> #define int long long #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() using namespace __gnu_pbds; using namespace std; typedef tree<pair<int,int>, null_type, less<pair<int,int>>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; vector<int> pos; const int HALF=50000; const int ACUT=25000; void energy(signed n, std::vector<signed> v){ ordered_set os; for (int i = 0; i < sz(v); i++) os.insert({v[i],i}); while (sz(os)>1) { pair<int,int> p=*os.find_by_order(0); int md=os.order_of_key({p.first+ACUT,-1}); pair<int,int> pa; if(md>sz(os)/2) pa=*os.find_by_order(md-1); else pa=*os.find_by_order(md); int df=(p.first+ACUT-pa.first); if(df<0) df+=HALF; rotate({(signed)pa.second},(signed)df); os.erase(pa); os.erase(p); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...