Submission #701132

#TimeUsernameProblemLanguageResultExecution timeMemory
701132mychecksedadArranging Shoes (IOI19_shoes)C++17
45 / 100
84 ms72492 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; #define pb push_back const int N = 1e6; int t[N], n; void add(int v){ while(v > 0){ t[v]++; v -= (v&-v); } } int get(int v){ int res=0; while(v <= n*2){ res+=t[v]; v+=v&-v; } return res; } long long count_swaps(vector<int> s) { long long ans = 0, c = 0; n = s.size()/2; deque<int> pos[n + 1]; vector<int> A (s.size()); for(int i = 0; i <= 2*n; ++i) t[i] = 0; for(int i = 0; i < 2*n; ++i){ if(s[i] < 0){ pos[abs(s[i])].pb(2*c); A[i] = 2*c; c++; } } for(int i = 0; i < 2*n; ++i){ if(s[i] > 0){ int p = pos[s[i]].front() + 1; pos[s[i]].pop_front(); A[i] = p; } } for(int i = 0; i < 2*n; ++i){ int p = get(A[i] + 1); ans += p; add(A[i] + 1); } return ans; }
#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...