Submission #389599

#TimeUsernameProblemLanguageResultExecution timeMemory
389599faresbasbsSorting (IOI15_sorting)C++14
0 / 100
2 ms716 KiB
#include <bits/stdc++.h> #include "sorting.h" using namespace std; vector<int> v,v2,st,e,l,r; bool seen[200001]; int n,rt; void dfs(int curr){ if(curr != rt){ l.push_back(rt); r.push_back(curr); } seen[curr] = 1; if(!seen[v2[curr]]){ dfs(v2[curr]); } } bool work(int mid){ memset(seen,0,sizeof seen); l.clear(),r.clear(); v2 = v; for(int i = 0 ; i <= mid-1 ; i += 1){ swap(v2[st[i]],v2[e[i]]); } int num = n; for(int i = 0 ; i < n ; i += 1){ if(seen[i]){ continue; } num -= 1; rt = i; dfs(i); } return num <= mid; } int findSwapPairs(int N , int s[] , int m , int x[] , int y[] , int p[] , int q[]){ n = N; for(int i = 0 ; i < n ; i += 1){ v.push_back(s[i]); } for(int i = 0 ; i < m ; i += 1){ st.push_back(x[i]) , e.push_back(y[i]); } int first = -1 , last = m; while(last-first > 1){ int mid = (first+last)/2; if(work(mid)){ last = mid; }else{ first = mid; } } for(int i = 0 ; i < l.size() ; i += 1){ p[i] = l[i] , q[i] = r[i]; } return last-1; } /*int main(){ }*/

Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:55:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |     for(int i = 0 ; i < l.size() ; i += 1){
      |                     ~~^~~~~~~~~~
#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...