제출 #1155813

#제출 시각아이디문제언어결과실행 시간메모리
1155813alexdd고대 책들 (IOI17_books)C++20
0 / 100
0 ms324 KiB
#include "books.h" #include<bits/stdc++.h> using namespace std; const int INF = 1e9; int n; int p[1000005]; int maxpref[1000005],minsuff[1000005]; long long minimum_walk(std::vector<int> cit_p, int s) { s++; n = cit_p.size(); for(int i=1;i<=n;i++) p[i] = cit_p[i-1]+1; int ult=0,primu=n+1; long long rez=0; for(int i=1;i<=n;i++) { maxpref[i] = max(maxpref[i-1], p[i]); if(p[i]!=i) { ult=i; primu = min(primu, i); } rez += abs(p[i]-i); } minsuff[n+1] = n+1; for(int i=n;i>0;i--) minsuff[i] = min(minsuff[i+1], p[i]); if(ult==0) return 0; ult = max(ult, s); primu = min(primu, s); for(int i=primu+1;i<=ult;i++) { if(maxpref[i-1]<i && minsuff[i]>=i) rez+=2; } int mnm=INF; for(int i=1;i<=n;i++) if(p[i]!=i) mnm = min(mnm, abs(i-s)); rez += 2*mnm; return rez; }
#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...