제출 #88236

#제출 시각아이디문제언어결과실행 시간메모리
88236Pajaraja정렬하기 (IOI15_sorting)C++17
0 / 100
13 ms512 KiB
#include "sorting.h"
#include <bits/stdc++.h>
#define MAXN 200007
using namespace std;
int p[MAXN],n,m,x[3*MAXN],y[3*MAXN],pi[MAXN];
bool vi[MAXN];
vector<int> z[2];
int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) 
{
	n=N; m=M; for(int i=0;i<n;i++) p[i]=S[i]; for(int i=0;i<m;i++) {x[i]=X[i]; y[i]=Y[i];}
	int r=0,brc=0;
	for(int i=0;i<n;i++) if(!vi[i]) {brc++; while(!vi[i]) {vi[i]=true; i=p[i];}}
	while(brc+r<n)
	{
		fill(vi,vi+n,false);
		swap(p[X[r]],p[Y[r]]);
		brc=0;
		for(int i=0;i<n;i++) if(!vi[i]) {brc++; while(!vi[i]) {vi[i]=true; i=p[i];}}
		r++;
	}
	fill(vi,vi+n,false);
	for(int i=0;i<n;i++) if(!vi[i]) while(!vi[i]) {vi[i]=true; if(!vi[p[i]]) z[0].push_back(i); z[1].push_back(p[i]);}
	for(int i=0;i<n;i++) pi[S[i]]=i;
	for(int i=0;i<r;i++)
	{
		swap(S[X[i]],S[Y[i]]);
		pi[S[X[i]]]=X[i];
		pi[S[Y[i]]]=Y[i];
		if(i>=z[0].size()) P[i]=Q[i]=0;
		else {P[i]=pi[z[0][i]]; Q[i]=pi[z[1][i]];}
	}
	return r;
}

컴파일 시 표준 에러 (stderr) 메시지

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:29:7: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(i>=z[0].size()) P[i]=Q[i]=0;
      ~^~~~~~~~~~~~~
#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...