제출 #283718

#제출 시각아이디문제언어결과실행 시간메모리
283718balbit고대 책들 (IOI17_books)C++14
50 / 100
319 ms20796 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> #define f first #define s second #define ALL(x) (x).begin(), (x).end() #define SZ(x) (int)((x).size()) #define pb push_back #ifdef BALBIT #define bug(...) cerr<<"#"<<__LINE__<<" "<<#__VA_ARGS__<<": ", _do(__VA_ARGS__) template <typename T> void _do(T && x) {cerr<<x<<endl;} template <typename T, typename ...S> void _do(T && x, S&&...y) {cerr<<x<<", "; _do(y...);} #define IOS() #else #define bug(...) #define IOS() ios::sync_with_stdio(0), cin.tie(0) #define endl '\n' #endif const int maxn = 1e6+5; bool seen[maxn]; int bg[maxn]; bool dv[maxn]; ll minimum_walk(vector<int> p, int s) { memset(seen, 0, sizeof seen); int n = SZ(p); ll re= 0; for (int i = 0; i<n; ++i) { // --p[i]; re+= abs(i-p[i]); } for (int i = 0; i<n; ++i) { if (!seen[i]) { seen[i] = 1; bg[i] = i; for (int x = p[i]; x != i; x = p[x]) seen[x] = 1, bg[i] = max(bg[i], x); for (int x = p[i]; x != i; x = p[x]) bg[x] = bg[i]; bug(i, bg[i]); } } int nmx = 0; re -= 2; for (int i = 0; i<n; ++i) { nmx = max(nmx, bg[i]); if (nmx <= i) { re += 2; dv[i] = 1; } } for (int i = 0; i<n; ++i) { if (p[i] == i && i != s) re -= 2; else break; } for (int i = n-1; i>=0; --i) { if (p[i] == i && i != s) re -= 2; else break; } return re; } #ifdef BALBIT signed main(){ IOS(); bug(minimum_walk({0,3,2,1},1)); bug(minimum_walk({3,2,1,0},0)); bug(minimum_walk({1,0,3,2},0)); } #endif
#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...