Submission #1285811

#TimeUsernameProblemLanguageResultExecution timeMemory
1285811muhammad-mutahirArranging Shoes (IOI19_shoes)C++20
10 / 100
1 ms348 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; long long mergeAndCount(vector<pair<int, int>>& arr, int left, int mid, int right) { vector<pair<int, int>> temp; long long inversions = 0; int i = left, j = mid + 1; while (i <= mid && j <= right) { if (arr[i] <= arr[j]) { temp.push_back(arr[i++]); } else { temp.push_back(arr[j++]); inversions += (mid - i + 1); } } while (i <= mid) { temp.push_back(arr[i++]); } while (j <= right) { temp.push_back(arr[j++]); } for (int k = 0; k < temp.size(); ++k) { arr[left + k] = temp[k]; } return inversions; } long long mergeSortAndCount(vector<pair<int, int>>& arr, int left, int right) { long long inversions = 0; if (left < right) { int mid = left + (right - left) / 2; inversions += mergeSortAndCount(arr, left, mid); inversions += mergeSortAndCount(arr, mid + 1, right); inversions += mergeAndCount(arr, left, mid, right); } return inversions; } long long countInversions(vector<pair<int, int>>& arr) { return mergeSortAndCount(arr, 0, arr.size() - 1); } long long count_swaps(vector<int> s) { vector<pair<int,int>>ord; int p1 = 1; int p2 = 2; for(int i :s){ if(i<=0){ ord.push_back({i,p1}); p1+=2; } else{ ord.push_back({i,p2}); p2+=2; } } return countInversions(ord); }
#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...