Submission #837458

#TimeUsernameProblemLanguageResultExecution timeMemory
837458abczzArranging Shoes (IOI19_shoes)C++14
100 / 100
118 ms24652 KiB
#include "shoes.h" #include <iostream> #include <vector> #include <cstdlib> #include <map> #define ll long long using namespace std; ll n, f, x, y, st[800000], id[2][200000]; bool B[200000]; vector <ll> V[2][200000], X; void build(ll id, ll l, ll r) { if (l == r) { st[id] = 1; return; } ll mid = (l+r)/2; build(id*2, l, mid); build(id*2+1, mid+1, r); st[id] = st[id*2] + st[id*2+1]; } ll query(ll id, ll l, ll r, ll ql, ll qr) { if (qr < l || r < ql) return 0; else if (ql <= l && r <= qr) return st[id]; ll mid = (l+r)/2; return query(id*2, l, mid, ql, qr) + query(id*2+1, mid+1, r, ql, qr); } void update(ll id, ll l, ll r, ll q) { if (l == r) { st[id] = 0; return; } ll mid = (l+r)/2; if (q <= mid) update(id*2, l, mid, q); else update(id*2+1, mid+1, r, q); st[id] = st[id*2] + st[id*2+1]; } long long count_swaps(std::vector<int> s) { build(1, 0, s.size()-1); f = 0; for (int i=0; i<s.size(); ++i) { V[(s[i] < 0)][abs(s[i])-1].push_back(i); } for (int i=0; i<s.size(); ++i) { if (B[i]) continue; auto u = V[1][abs(s[i])-1][id[1][abs(s[i])-1]]; auto v = V[0][abs(s[i])-1][id[0][abs(s[i])-1]]; B[u] = B[v] = 1; ++id[0][abs(s[i])-1]; ++id[1][abs(s[i])-1]; f += query(1, 0, s.size()-1, 0, u)-1; update(1, 0, s.size()-1, u); f += query(1, 0, s.size()-1, 0, v)-1; update(1, 0, s.size()-1, v); } return f; }

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:45:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |  for (int i=0; i<s.size(); ++i) {
      |                ~^~~~~~~~~
shoes.cpp:48:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |   for (int i=0; i<s.size(); ++i) {
      |                 ~^~~~~~~~~
#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...