Submission #679373

#TimeUsernameProblemLanguageResultExecution timeMemory
679373Nahian9696Arranging Shoes (IOI19_shoes)C++17
50 / 100
102 ms20872 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; #define f0(i, n) for(int i = 0; i < n; i++) #define f1(i, n) for(int i = 1; i <= n; i++) bool compare(pair<int, int> p1, pair<int, int> p2) { int ind1 = p1.first + p1.second; int ind2 = p2.first + p2.second; if(p1.first > p1.second) ind1++; if(p2.first > p2.second) ind2++; return ind1 < ind2; } class segment_tree { private: int size, size_n; vector<int> tree; public: segment_tree(int n, vector<int> arr) { int base = 1; while(base < 2*n) base *= 2; size = base; tree.resize(size, 0); base /= 2; size_n = base; f0(i, n) tree[i + base] = arr[i]; for(int i = base - 1; i >= 0; i--) { tree[i] = tree[2*i] + tree[2*i + 1]; } } void update(int ind, int val) { ind += size_n; int delta = val - tree[ind]; while(ind > 0) { tree[ind] += delta; ind /= 2; } } int query(int l, int r) { l += size_n; r += size_n; int res = 0; while( l <= r) { if(l % 2 == 1) { res += tree[l]; l++; } if(r % 2 == 0) { res += tree[r]; r--; } l /= 2; r /= 2; } return res; } }; long long count_swaps(std::vector<int> s) { int n = s.size()/2; vector<pair<int, int>> pp; vector<int> v[n+1][2]; f0(i, 2*n) { if(s[i] < 0) { v[-s[i]][0].push_back(i); } else { v[s[i]][1].push_back(i); } } f1(i, n) { f0(j, v[i][0].size()) { pp.push_back({v[i][0][j], v[i][1][j]}); } } sort(pp.begin(), pp.end(), compare); long long ans[2*n]; long long ans2[2*n]; f0(i, n) { ans[2*i] = pp[i].first; ans[2*i + 1] = pp[i].second; ans2[pp[i].first] = 2*i; ans2[pp[i].second] = 2*i + 1; // ans += abs(pp[i].first - 2*i); // ans += abs(pp[i].second - 2*i - 1); // cout << pp[i].first << " " << 2*i << " " << pp[i].second << " " << 2*i + 1 << endl; } segment_tree st(2*n, vector<int>(2*n, 0)); int ret = 0; f0(i, 2*n) { ret += ans2[i]; ret -= st.query(0, ans2[i]); st.update(ans2[i], 1); } return ret; // return ans; return 1; }

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:6:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 | #define f0(i, n) for(int i = 0; i < n; i++)
......
   78 |   f0(j, v[i][0].size()) {
      |      ~~~~~~~~~~~~~~~~~             
shoes.cpp:78:3: note: in expansion of macro 'f0'
   78 |   f0(j, v[i][0].size()) {
      |   ^~
shoes.cpp:85:12: warning: variable 'ans' set but not used [-Wunused-but-set-variable]
   85 |  long long ans[2*n];
      |            ^~~
#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...