제출 #1178984

#제출 시각아이디문제언어결과실행 시간메모리
1178984Godgift42Rabbit Carrot (LMIO19_triusis)C++20
14 / 100
3 ms584 KiB
#include <bits/stdc++.h> using namespace std; vector<int> st; void upd(int v, int tl, int tr, int pos, int val){ if(tl==tr)st[v]=max(val,st[v]); else{ int tm=(tl+tr)/2; if(tm>=pos)upd(v*2,tl,tm,pos,val); else upd(v*2+1,tm+1,tr,pos,val); st[v]=max(st[v*2],st[v*2+1]); } } int ma(int v, int tl, int tr, int l, int r){ if(l>r)return 0; if(tl==l and tr==r)return st[v]; int tm=(tl+tr)/2; return max(ma(v*2,tl,tm,l,min(r,tm)),ma(v*2+1,tm+1,tr,max(l,tm+1),r)); } int main(){ int n,m; cin >> n >> m; vector<int> a(n); vector<int> b(n); map<int,int> mp; for(int i=0;i<n;i++){ cin >> a[i]; b[i]=m*(i+1)-a[i]; mp[b[i]]++; } int cnt=0; for(auto& i:mp){ i.second=cnt; cnt++; } st.resize(4*cnt); int ans=0; for(int i=0;i<n;i++){ if(b[i]>=0){ int x=ma(1,0,n-1,0,mp[b[i]])+1; ans=max(ans,x); upd(1,0,n-1,mp[b[i]],x); } } cout << n-ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...