제출 #46914

#제출 시각아이디문제언어결과실행 시간메모리
46914SpaimaCarpatilor고대 책들 (IOI17_books)C++17
50 / 100
253 ms17300 KiB
#include "books.h" #include<bits/stdc++.h> using namespace std; int nr, N, S, p[1000009], mars[1000009]; bool useful[1000009]; long long minimum_walk (vector < int > pp, int ss) { N = pp.size (), S = ss + 1; for (int i=1; i<=N; i++) p[i] = pp[i - 1] + 1; long long ans = 0; for (int i=1; i<=N; i++) { int curr = i - p[i]; if (curr < 0) curr = -curr; ans += curr; } for (int i=1; i<=N; i++) if (i != p[i]) { int l = i, r = p[i]; if (l > r) swap (l, r); mars[l] ++, mars[r] --; useful[i] = 1; } useful[S] = 1; int usefulToRight = 0, usefulToLeft = 0; for (int i=1; i<=N; i++) usefulToRight += useful[i]; for (int i=1; i<N; i++) mars[i] += mars[i - 1]; for (int i=1; i<N; i++) { usefulToRight -= useful[i]; usefulToLeft += useful[i]; if (usefulToLeft > 0 && usefulToRight > 0 && mars[i] == 0) ans += 2; } return ans; }
#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...