Submission #1044925

#TimeUsernameProblemLanguageResultExecution timeMemory
1044925marXor Sort (eJOI20_xorsort)C++14
100 / 100
41 ms1172 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll arr[1000007]; int main(){ int n,s; cin>>n>>s; for (int i = 0; i < n; i++){ cin>>arr[i]; } vector<pair<int,int>> ans; if(s==2){ for(int bit = 22; bit >= 0; bit--){ for(int i = 0; i+1 < n; i++){ if(arr[i]&(1LL<<bit)){ if (arr[i+1]&(1LL<<bit)){ ans.push_back({i+1,i+2}); arr[i]^=arr[i+1]; } else { ans.push_back({i+2,i+1}); ans.push_back({i+1,i+2}); arr[i+1]^=arr[i]; arr[i]^=arr[i+1]; } } } if((n>=1) && (arr[n-1]&(1LL<<bit))){ n--; } } } else { for(int i = n; i >= 1; i--){ int mx = 0; for(int j = 0; j < i; j++){ if(arr[j]>arr[mx]) mx=j; if(j+1<i){ ans.push_back({j+1,j+2}); } } for(int j = mx-2; j >= 0; j--){ ans.push_back({j+1,j+2}); } for(int j = mx; j+1 < i; j++){ ans.push_back({j+2,j+1}); } for(int k = mx; k + 1 < i; k++){ swap(arr[k],arr[k+1]); } } for(int i = n; i >= 2; i--){ ans.push_back({i-1,i}); } } cout<<ans.size()<<endl; for (int i = 0; i < ans.size(); i++){ cout<<ans[i].first<<" "<<ans[i].second<<endl; } }

Compilation message (stderr)

xorsort.cpp: In function 'int main()':
xorsort.cpp:54:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |  for (int i = 0; i < ans.size(); i++){
      |                  ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...