제출 #233222

#제출 시각아이디문제언어결과실행 시간메모리
233222FieryPhoenix정렬하기 (IOI15_sorting)C++11
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "sorting.h" using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef long long ll; typedef long double ld; #define INF 2001001001 #define MOD 1000000007 int N,S[200001]; int M,X[600001],Y[600001]; int arr[200001]; bool vis[200001]; int to[200001]; deque<pair<int,int>>q; int pos[200001]; void dfs(int node){ vis[node]=true; if (!vis[arr[node]]){ q.push_back({node,arr[node]}); dfs(arr[node]); //cout<<"Q: "<<arr[node]<<' '<<arr[to[node]]<<endl; } } bool check(int mid){ q.clear(); for (int i=0;i<N;i++){ arr[i]=S[i]; vis[i]=false; } for (int i=1;i<=mid;i++) swap(arr[X[i]],arr[Y[i]]); int comps=0; for (int i=0;i<N;i++){ pos[arr[i]]=i; if (!vis[arr[i]]){ comps++; q.push_back({i,arr[i]}); dfs(arr[i]); q.pop_back(); } } return N-comps<=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++) S[i]=s[i]; M=m; for (int i=1;i<=M;i++){ X[i]=x[i]; Y[i]=y[i]; } int low=-1,high=M+1; while (low+1<high){ int mid=(low+high)/2; if (check(mid)) high=mid; else low=mid; } check(high); for (int i=high;i>=1;i--){ if (!q.empty()){ ansX[i]=pos[q[0].first]; ansY[i]=pos[q[0].second]; swap(pos[arr[X[i]]],pos[arr[Y[i]]]); swap(arr[X[i]],arr[Y[i]]); q.pop_front(); } } for (int i=1;i<=high;i++){ swap(S[X[i]],S[Y[i]]); swap(S[P[i]],S[Q[i]]); } for (int i=0;i<N;i++) if (S[i]!=i) assert(0); return high; }

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

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:68:7: error: 'ansX' was not declared in this scope
       ansX[i]=pos[q[0].first];
       ^~~~
sorting.cpp:68:7: note: suggested alternative: 'abs'
       ansX[i]=pos[q[0].first];
       ^~~~
       abs
sorting.cpp:69:7: error: 'ansY' was not declared in this scope
       ansY[i]=pos[q[0].second];
       ^~~~
sorting.cpp:69:7: note: suggested alternative: 'abs'
       ansY[i]=pos[q[0].second];
       ^~~~
       abs