Submission #1019626

#TimeUsernameProblemLanguageResultExecution timeMemory
1019626KasymKArranging Shoes (IOI19_shoes)C++17
45 / 100
24 ms3256 KiB
#include "bits/stdc++.h" using namespace std; #define ll long long #define ff first #define ss second #define all(v) v.begin(), v.end() ll count_swaps(vector<int> v){ int n = (int)v.size(), ok = 1; n >>= 1; for(int i = 0; i < n; ++i) ok &= (v[i] < 0); for(int i = 0; i < n; ++i) ok &= (-v[i] == v[i+n]); ll ans = 0; if(ok){ n--; ans = n*1ll*(n+1)/2; return ans; } n <<= 1; ok = 1; for(int i = 1; i < n; ++i) ok &= (abs(v[0]) == abs(v[i])); if(ok){ int ne_ = 1, ne__ = 1; for(int i = 0; i < n; ++i){ ne_ = max(i+1, ne_); ne__ = max(i+1, ne__); if(!(i&1)){ if (v[i] < 0) continue; while(v[ne_] > 0) ne_++; swap(v[i], v[ne_]); ans += (ne_-i); } if(i&1){ if(v[i] > 0) continue; while (v[ne__] < 0) ne__++; swap(v[i], v[ne__]); ans += (ne__-i); } } return ans; } vector<int> vis(n, 0); for(int i = 0; i < n-1; i++){ for(int j = i+1; j < n; ++j) if(-v[i] == v[j]){ if(v[i] > 0) ans++; vis[j] = 1; for(int k = i+1; k < j; ++k) ans += (!vis[k]); break; } } return ans; } // int main(){ // printf("%lld", count_swaps({2, 1, -1, -2})); // return 0; // }
#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...