Submission #965375

#TimeUsernameProblemLanguageResultExecution timeMemory
965375SyriusArranging Shoes (IOI19_shoes)C++14
0 / 100
411 ms546628 KiB
#include <bits/stdc++.h> #include "shoes.h" using namespace std; // #define int long long #define ll long long #define ff first #define ss second #define pint pair < int , int > #define fast ios_base::sync_with_stdio(NULL); cin.tie(NULL) const int inf = 1e9 + 9; const int mxn = 2e5 + 2; const int mod = 1e9 + 7; int fn[mxn]; void update(int x , int v) { for (; x <= mxn; x += x&-x) { fn[x] += v; } } int query(int l , int r) { int ans = 0; l--; for (; r > 0; r -= r&-r) ans += fn[r]; for (; l > 0; l -= l&-l) ans -= fn[l]; } ll count_swaps(vector < int > v) { int n = v.size() / 2; bool b[2*n]; queue < int > left[mxn] , right[mxn]; for (int i = 0; i < 2 * n; i++) { if (v[i] < 0) left[v[i]].push(i); else right[v[i]].push(i); update(i+1 , 1); } int ans = 0; for (int i = 0; i < 2*n; i++) { if (b[i]) continue; int id; if (b[i] < 0) { id = right[b[i]].front(); right[b[i]].pop(); ans += query(i+2 , id); update(id+1 , -1); } else { id = left[b[i]].front(); left[b[i]].pop(); ans += query(i+2 , id) + 1; update(id+1 , -1); } } return ans; }

Compilation message (stderr)

shoes.cpp: In function 'int query(int, int)':
shoes.cpp:28:1: warning: no return statement in function returning non-void [-Wreturn-type]
   28 | }
      | ^
shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:46:12: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
   46 |   if (b[i] < 0) {
      |       ~~~~~^~~
shoes.cpp:37:26: warning: array subscript -1 is below array bounds of 'std::queue<int> [200002]' [-Warray-bounds]
   37 |   if (v[i] < 0) left[v[i]].push(i);
      |                 ~~~~~~~~~^
shoes.cpp:37:26: warning: array subscript -1 is below array bounds of 'std::queue<int> [200002]' [-Warray-bounds]
shoes.cpp:37:26: warning: array subscript -1 is below array bounds of 'std::queue<int> [200002]' [-Warray-bounds]
#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...