Submission #317929

#TimeUsernameProblemLanguageResultExecution timeMemory
317929keta_tsimakuridzeSorting (IOI15_sorting)C++14
100 / 100
307 ms21992 KiB
#include<bits/stdc++.h> #define f first #define s second #include "sorting.h" using namespace std; int findSwapPairs(int N, int A[], int M, int x[], int y[], int P[], int Q[]) { int l=0; int r=M; std::vector<std::pair<int,int> > V,ans; int a[N+5],ind[N+5]; while(l<=r){ V.clear(); int mid=(l+r)/2; for(int i=0;i<N;i++){ ind[A[i]]=i; a[i]=A[i]; } for(int i=0;i<mid;i++){ std::swap(a[x[i]],a[y[i]]); } for(int i=0;i<N;i++){ ind[a[i]]=i; } for(int i=0;i<N;i++){ if(a[i]!=i){ V.push_back(std::make_pair(a[i],i)); std::swap(a[i],a[ind[i]]); std::swap(ind[a[ind[i]]],ind[i]); } } for(int i=0;i<N;i++){ a[i]=A[i]; ind[a[i]]=i; } if(V.size()<=mid) { ans.clear(); for(int i=0;i<mid;i++){ std::swap(ind[a[x[i]]],ind[a[y[i]]]); std::swap(a[x[i]],a[y[i]]); if(i<V.size() ){ // V[i].f V[i].s swap(ind[V[i].f],ind[V[i].s]); swap(a[ind[V[i].f]],a[ind[V[i].s]]); ans.push_back(make_pair(ind[V[i].f],ind[V[i].s])); } else ans.push_back(make_pair(0,0)); } r=mid-1; } else l=mid+1; } for(int i=0;i<ans.size();i++){ P[i]=ans[i].first; Q[i]=ans[i].second; } return ans.size(); }

Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:36:14: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |   if(V.size()<=mid) {
      |      ~~~~~~~~^~~~~
sorting.cpp:41:8: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |    if(i<V.size() ){
      |       ~^~~~~~~~~
sorting.cpp:54:15: 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++){
      |              ~^~~~~~~~~~~
sorting.cpp:58:17: warning: conversion from 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} to 'int' may change value [-Wconversion]
   58 |  return ans.size();
      |         ~~~~~~~~^~
#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...