Submission #316706

#TimeUsernameProblemLanguageResultExecution timeMemory
316706keta_tsimakuridze정렬하기 (IOI15_sorting)C++14
0 / 100
2 ms512 KiB
#include<bits/stdc++.h>
#include "sorting.h"
int findSwapPairs(int N, int A[], int M, int x[], int y[], int P[], int Q[]) {
    int l=0; int r=M-1;
    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++){
    		a[i]=A[i];
    		ind[a[i]]=i;
		}
		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]]);
		}
		for(int i=0;i<N;i++){
			if(a[i]!=i){
				std::swap(a[i],a[ind[i]]);
				V.push_back(std::make_pair(i,ind[i]));
				std::swap(ind[a[ind[i]]],ind[i]);	
			}
		}
		if(V.size()<=mid+1) {
			ans.resize(mid+1);
			while(V.size()!=mid+1){
				V.push_back(std::make_pair(0,0));
			}
			ans=V; 
			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:25: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]
   25 |   if(V.size()<=mid+1) {
      |      ~~~~~~~~^~~~~~~
sorting.cpp:27:18: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   27 |    while(V.size()!=mid+1){
      |          ~~~~~~~~^~~~~~~
sorting.cpp:35: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]
   35 |  for(int i=0;i<ans.size();i++){
      |              ~^~~~~~~~~~~
sorting.cpp:39:17: warning: conversion from 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} to 'int' may change value [-Wconversion]
   39 |  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...