Submission #331576

#TimeUsernameProblemLanguageResultExecution timeMemory
331576couplefireArranging Shoes (IOI19_shoes)C++17
30 / 100
206 ms13548 KiB
#include <bits/stdc++.h> using namespace std; #define MAXN 100005 struct FenwickTree { vector<int> bit; // binary indexed tree int n; FenwickTree(int n) { this->n = n; bit.assign(n, 0); } FenwickTree(vector<int> a) : FenwickTree(a.size()) { for (size_t i = 0; i < a.size(); i++) add(i, a[i]); } int sum(int r) { int ret = 0; for (; r >= 0; r = (r & (r + 1)) - 1) ret += bit[r]; return ret; } int sum(int l, int r) { return sum(r) - sum(l - 1); } void add(int idx, int delta) { for (; idx < n; idx = idx | (idx + 1)) bit[idx] += delta; } }; FenwickTree tree(MAXN); vector<int> arr[MAXN]; map<int, int> mp; long long count_swaps(vector<int> s) { long long ans = 0; int n = s.size(); int cur = 0; for(int i = 0; i<n; i++){ arr[abs(s[i])].push_back(s[i]); s[i] = abs(s[i]); if(mp.count(s[i])){ s[i] = mp[s[i]]; } else{ mp[s[i]] = ++cur; s[i] = cur; } } for(int i = 1; i<=n/2; i++){ long long tmp = 0; int shift = 0; queue<pair<int, int>> q; for(int j = 0; j<arr[i].size(); j++){ if(q.empty() || q.front().first/arr[i][j] == 1){ q.push({arr[i][j], j-shift}); } else{ tmp += j-shift-q.front().second-(q.front().first < 0); q.pop(); shift++; } } ans += tmp; } for(int i = n-1; i>=0; i--){ ans += tree.sum(0, s[i]-1); tree.add(s[i], 1); } return ans; } // int main() { // freopen("a.in", "r", stdin); // int n; // assert(1 == scanf("%d", &n)); // vector<int> S(2 * n); // for (int i = 0; i < 2 * n; i++) // assert(1 == scanf("%d", &S[i])); // fclose(stdin); // long long result = count_swaps(S); // printf("%lld\n", result); // fclose(stdout); // return 0; // }

Compilation message (stderr)

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