제출 #617666

#제출 시각아이디문제언어결과실행 시간메모리
617666AbdelmagedNour고대 책들 (IOI17_books)C++17
22 / 100
2021 ms74308 KiB
#include<bits/stdc++.h> using namespace std; #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>st1; tree<int,null_type,greater<int>,rb_tree_tag,tree_order_statistics_node_update>st2; #include "books.h" //#include"grader.cpp" long long minimum_walk(vector<int> p, int s) { st1.clear(); st2.clear(); int n=p.size(); vector<int>seg1(n),seg2(n+1),mx1(n+1),mx2(n+1); long long res=0; for(int i=0;i<n;i++){ st2.insert(p[i]); seg1[i]=st2.order_of_key(i); } for(int i=0;i<n;i++){ st2.erase(p[i]); seg2[i]=st2.size()-st2.order_of_key(i); } for(int i=n-1;i>=0;i--)mx1[i]=max(mx1[i+1],seg1[i]); for(int i=0;i<n;i++)mx2[i]=max((i?mx2[i-1]:0),seg1[i]); for(int i=0;i<n;i++){ if(seg1[i]==0){ if(i>=s&&mx1[i])res+=2; else if(i<s&&mx2[i])res+=2; } else res+=seg1[i]+seg2[i]; } return res; }
#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...