Submission #1164795

#TimeUsernameProblemLanguageResultExecution timeMemory
1164795SyedSohaib_123Rabbit Carrot (LMIO19_triusis)C++20
100 / 100
134 ms21736 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("O2") #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #define append push_back #define int long long const int N=2e5+10,LG=21; int mod=998244353; int a[N],dp[N]; int n,m; int tree[N<<2]; int sz=0; map<int,int>mp; int get(int a,int b,int l=1,int r=sz,int s=1){ if(r<a or l>b) return 0; if(a<=l and r<=b) return tree[s]; int m=(l+r)>>1; return max(get(a,b,l,m,s*2),get(a,b,m+1,r,s*2+1)); } void upd(int a,int b,int l=1,int r=sz,int s=1){ if(l>a or r<a) return; if(l==r){ tree[s]=max(tree[s],b); return; } int m=(l+r)>>1; upd(a,b,l,m,s*2); upd(a,b,m+1,r,s*2+1); tree[s]=max(tree[s*2],tree[s*2+1]); } void solve(int tst){ cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) a[i]-=m*i; int mx=0; vector<int>v; for(int i=0;i<=n;i++){ v.append(a[i]); } sort(v.begin(),v.end()); sz=0; for(int i=0;i<v.size();i++){ if(i==0 or v[i]!=v[i-1]) sz++; mp[v[i]]=sz; } for(int i=1;i<=n;i++){ if(a[i]<=0){ dp[i]=get(mp[a[i]],sz)+1; upd(mp[a[i]],dp[i]); } mx=max(mx,dp[i]); } cout<<n-mx<<endl; } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int t = 1; // cin >> t; for(int i=1;i<=t;i++){ solve(i); // if(i!=t) cout<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...