Submission #824452

#TimeUsernameProblemLanguageResultExecution timeMemory
824452caganyanmazArranging Shoes (IOI19_shoes)C++17
10 / 100
21 ms3520 KiB
#include <bits/stdc++.h> #define mp(x...) array<int, 2>({x}) #define pb push_back #define int int64_t #define vi vector<int32_t> using namespace std; #include "shoes.h" constexpr static int MXSIZE = 1e6 + 5; struct Fenwick { int v[MXSIZE]; void set(int i, int val) { for (++i;i<MXSIZE;i+=i&(-i)) v[i] += val; } int get(int i) { int res = 0; for(++i;i;i-=i&(-i)) res += v[i]; return res; } }; int subtask1(vi& s) { if (s[0] > 0) return 1; else return 0; } Fenwick fw; int last[MXSIZE]; map<array<int, 2>, int> pos; int subtask4(vi& s) { int n = s.size() / 2; for (int i = 0; i < n; i++) { array<int, 2> p = {-s[i], last[s[i]]++}; pos[p] = i; // Leftover in the left } for (int i = 0; i < n; i++) last[i] = 0; int res = 0; for (int i = n; i < 2*n; i++) { assert(pos.find(mp(s[i], last[s[i]])) != pos.end()); array<int, 2> p = {s[i], last[s[i]]++}; int ps = pos[p]; res += i-ps-1 - fw.get(ps); fw.set(ps, 1); } return res; } long long count_swaps(vi s) { if (s.size() == 2) return subtask1(s); return subtask4(s); }
#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...