Submission #294050

#TimeUsernameProblemLanguageResultExecution timeMemory
294050Leonardo16Arranging Shoes (IOI19_shoes)C++14
50 / 100
193 ms138744 KiB
/// Code by Leonardo16 /// “Your focus determines your reality.” – Qui-Gon Jinn #include<bits/stdc++.h> using namespace std; #pragma GCC optimize("Ofast","unroll-loops","omit-frame-pointer","inline") //#pragma GCC option("arch=native","tune=native","no-zero-upper") //#pragma GCC target("avx2") //#define int long long #define ll long long #define sz size #define ull unsigned long long #define ld long double #define ii pair<int,int> #define fst first #define scd second #define vi vector<int> #define vii vector<ii> #define pb push_back #define pf push_front #define fl '\n' #define el endl #define all(x) x.begin() , x.end() #define rall(x) x.rbegin() , x.rend() /// Functions #define db(x) cerr << #x << ": " << (x) << '\n'; #define random() __builtin_ia32_rdtsc() #define lg2(x) 31-__builtin_clz(x) #define lg2ll(x) 63-__builtin_clzll(x) #define pi acos(-1) #define YN(x) cout<<((x)?("YES"):("NO"))<<fl; #define yn(x) cout<<((x)?("Yes"):("No"))<<fl; #define des(x,s1,s2,end1,end2) cout<<((x)?(s1):(s2))<<fl;if(x){end1;}else{end2;} #define precision(x) cout.setf(ios::fixed);cout.precision(x); /// Red-Black Tree Template //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> //using namespace __gnu_pbds; //typedef tree < long long , null_type , less<long long> , rb_tree_tag , tree_order_statistics_node_update > ordered_set; //#define less_than(n) order_of_key(n) //#define en_pos(n) find_by_order(n) /// Prime numbers 173,179,311,331,737,1009,2011,2027,3079,4001,100003 ///===================================================================== deque<int>neg[100005],pos[100005]; int abi[200005]; void update(int pos,int val){ while(pos<200005){ abi[pos]+=val; pos+=(pos&-pos); } } int query(int pos){ int ret=0; while(pos>0){ ret+=abi[pos]; pos-=(pos&-pos); } return ret; } ll count_swaps(vi v){ int n=v.sz(); int ans=0; for(int i=0;i<n;i++){ // cout<<i<<"------>"<<v[i]<<fl; if(v[i]>0){ if(neg[v[i]].sz()!=0){ // cout<<ans<<" "; ans+=query( neg[v[i]][0]-1 ); update(neg[v[i]][0],-1); neg[v[i]].pop_front(); ans+=query(i+1); // cout<<ans<<fl; }else{ pos[v[i]].pb(i+1); update(i+1,1); } }else{ if(pos[abs(v[i])].sz()!=0){ // cout<<ans<<" "; ans+=query( pos[abs(v[i])][0] -1); update(pos[ abs(v[i])][0],-1); pos[abs(v[i])].pop_front(); ans+=query(i+1)+1; // cout<<ans<<fl; }else{ neg[ abs(v[i]) ].pb(i+1); update(i+1,1); } } } return ans; } //int main(){ // vi v={-1,-2,1,-3,-4,4,-1,2,3,1}; // cout<<count_swaps(v)<<fl; //} // //
#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...