Submission #577069

#TimeUsernameProblemLanguageResultExecution timeMemory
577069shezittArranging Shoes (IOI19_shoes)C++14
45 / 100
112 ms139336 KiB
#include "shoes.h" #include <iostream> #include <queue> using namespace std; const int mxN = 2e5; long long T[mxN+5]; int n; void add(int i, int x){ i++; while(i <= mxN){ T[i] += x; i += i & -i; } } long long query(int i){ i++; long long sum = 0; while(i > 0){ sum += T[i]; i -= i & -i; } return sum; } long long count_swaps(vector<int> s) { n = int(s.size())/2; vector<int> b(2*n); vector<queue<int>> pos(mxN+5); int c = 1; for(int i=0; i<2*n; ++i){ if(s[i] < 0){ b[i] = c++; pos[-s[i]].push(c++); } } for(int i=0; i<2*n; ++i){ if(s[i] > 0){ b[i] = pos[s[i]].front(); pos[s[i]].pop(); } } long long ans = 0; for(int i=2*n-1; i>=0; --i){ ans += query(max(1, b[i]-1)); add(b[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...