Submission #42420

#TimeUsernameProblemLanguageResultExecution timeMemory
42420yusufake고대 책들 (IOI17_books)C++98
0 / 100
2041 ms488 KiB
#include<bits/stdc++.h> using namespace std; #define _ int v, int tl, int tr, int l, int r #define tm (tl+tr >> 1) #define sol v+v,tl,tm,l,r #define sag v+v+1,tm+1,tr,l,r #define mp make_pair #define pb push_back #define st first #define nd second typedef long long ll; typedef pair < ll , ll > pp; const int mod = 1e9 + 7; const int N = 1e6 + 6; ll H[N],A[N],B[N],L[N],R[N],n,i,l,r,t,x; ll minimum_walk(vector < int > p , int s){ x = t = 0; n = p.size(); for(i=0;i<n;i++) H[i] = 0; for(i=0;i<n;i++){ x += abs(p[i] - i); if(H[i]) continue; l = r = i; for(x=i; !H[x] ; x = p[x]){ H[x] = 1; l = min(l , i); r = max(r , i); } A[l] = r; B[r] = l; } for(r=-1,i=0;i<n;i++){ r = max(r , A[i]); R[i] = r; } for(l=n,i=n-1; i>=0 ;i--){ l = min(l , B[i]); L[i] = l; } for(i=n-1; i>=0 && p[i] == i ; i--); for(x=R[s]+1; x <= i; x = R[x]+1){ t++; } for(i=0; i<n && p[i] == i ; i++); for(x=L[s]-1; x >= i ; x = L[x]-1){ t++; } return x + 2 * t; }
#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...