Submission #1169982

#TimeUsernameProblemLanguageResultExecution timeMemory
1169982sasdeArcade (NOI20_arcade)C++20
51 / 100
3 ms836 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int maxn=5e5+10; int n,m; int ans=0; int dp[maxn]; int a[maxn]; int t[maxn]; pair<int,int> s[maxn]; void f(int x) { if(x>dp[ans] || ans==0) { ans++; dp[ans]=x; } int l=1; int r=ans; int pos=0; while(l<=r) { int mid=(l+r)/2; if(dp[mid]<x) { pos=mid; l=mid+1; } else { r=mid-1; } } dp[pos+1]=x; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); ///freopen("sort.in","r",stdin); ///freopen("sort.out","w",stdout); cin>>n>>m; for(int i=0;i<m;i++) { cin>>t[i]; } for(int i=0;i<m;i++) { cin>>a[i]; } for(int i=0;i<m;i++) { s[i]={a[i]+t[i],(a[i]-t[i]+m)}; } sort(s,s+m); for(int i=0;i<m;i++) { f(s[i].second); } cout<<ans<<endl; return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...