이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef pair<ll, ll> pll;
typedef pair<ll, ll> pii;
#define all(a) a.begin(),a.end()
#define rep(i,a,b) for(int i=a;i<b;i++)
const ll mod = 1e9 + 7;
const ll MAXN = 2e5 + 1;
vector<vector<int>>mag;
vector<int>we,vec,vec1;
vector<bool>visit;
int ans = 0;
void dfs(int v,int p) {
visit[v] = true;
we[v] = p;
mag[p].push_back(v);
if(!visit[vec[v]])
dfs(vec[v],p);
}
int findSwapPairs(int n, int S[], int m, int X[], int Y[], int P[], int Q[]) {
mag.resize(n);
we.resize(n);
visit.resize(n);
vec1.resize(n);
vec.resize(n);
rep(i, 0, n) vec[i] = S[i];
rep(i, 0, n) {
vec1[vec[i]] = i;
}
int cnt = 0;
rep(i, 0, n) {
if (!visit[i]) {
dfs(i, cnt);
cnt++;
}
}
ans = 0;
rep(i, 0, n)
ans += max((int)mag[i].size() - 1, 0);
if (ans == 0)
return 0;
rep(R, 1, m+1) {
swap(vec[X[R - 1]], vec[Y[R - 1]]);
swap(vec1[vec[X[R - 1]]], vec1[vec[Y[R - 1]]]);
mag.clear();
we.clear();
visit.clear();
mag.resize(n);
we.resize(n);
visit.resize(n);
int cnt = 0;
rep(i, 0, n) {
if (!visit[i]) {
dfs(i, cnt);
cnt++;
}
}
ans = 0;
rep(i, 0, n)
ans += max((int)mag[i].size() - 1, 0);
if (ans <= R) {
int sz = 0;
rep(i, 0, n) {
rep(j, 0, (int)mag[i].size() - 1) {
P[sz] = vec1[mag[i][j]];
Q[sz] = vec1[mag[i][j+1]];
sz++;
}
}
return R;
}
}
}
컴파일 시 표준 에러 (stderr) 메시지
sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:61:7: warning: declaration of 'cnt' shadows a previous local [-Wshadow]
61 | int cnt = 0;
| ^~~
sorting.cpp:40:6: note: shadowed declaration is here
40 | int cnt = 0;
| ^~~
sorting.cpp:83:1: warning: control reaches end of non-void function [-Wreturn-type]
83 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |