Submission #1123994

#TimeUsernameProblemLanguageResultExecution timeMemory
1123994allin27xSorting (IOI15_sorting)C++17
74 / 100
1094 ms6712 KiB
#include <bits/stdc++.h> #include "sorting.h" using namespace std; int solveforM(int n, int st[], int m, int x[], int y[], int p[], int q[]) { vector<int> a(n); iota(a.begin(), a.end(), 0); vector<int> s(n); for (int i=0; i<n; i++) s[i] = st[i]; for (int i=m-1; i>=0; i--) swap(a[x[i]], a[y[i]]); for (int ind=0; ind<m; ind++) { int f =0; for (int i=0; i<n; i++) if (s[i] != i) f++; if (!f) return ind; p[ind] = 0; q[ind] = 0; swap(a[x[ind]], a[y[ind]]); swap(s[x[ind]], s[y[ind]]); f = 0; for (int i=0; i<n; i++) { if (f) break; if (a[i] != s[i]) { for (int j=0; j<n; j++) { if (a[j] == s[i]) { p[ind] = i; q[ind] = j; swap(s[i], s[j]); f = 1; break; } } } } } int f =0; for (int i=0; i<n; i++) if (s[i] != i) f++; if (f) return 1e9; return m; } int findSwapPairs(int n, int s[], int m, int x[], int y[], int p[], int q[]) { int l = 0; int r = m; while (l<r) { int md = (l+r)/2; if (solveforM(n,s, md, x,y,p,q) <m) r = md; else l = md+1; } solveforM(n,s, l, x,y,p,q); return l; }
#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...