Submission #294554

#TimeUsernameProblemLanguageResultExecution timeMemory
294554nandonathanielArcade (NOI20_arcade)C++14
100 / 100
240 ms22504 KiB
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> pii; const int MAXN=1e6+5; int MAX,a[MAXN],T[MAXN],A[MAXN],bit[MAXN]; pii arr[MAXN]; int query(int x){ int ret=0; for(int i=x;i>0;i-=(i&-i)){ ret=max(ret,bit[i]); } return ret; } void update(int x,int v){ for(int i=x;i<=MAX;i+=(i&(-i))){ bit[i]=max(bit[i],v); } } int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int n,m; cin >> n >> m; for(int i=1;i<=m;i++)cin >> T[i]; for(int i=1;i<=m;i++)cin >> A[i]; for(int i=1;i<=m;i++)arr[i]={A[i]+T[i],-(A[i]-T[i])}; sort(arr+1,arr+m+1); vector<pii> v; for(int i=1;i<=m;i++){ a[i]=-arr[i].second; v.push_back({a[i],i}); } sort(v.begin(),v.end()); for(int i=0;i<v.size();i++){ if(i==0 || v[i].first!=v[i-1].first)MAX++; a[v[i].second]=MAX; } int ans=0; for(int i=1;i<=m;i++){ int dp=query(a[i]-1)+1; update(a[i],dp); ans=max(ans,dp); } cout << ans << '\n'; return 0; }

Compilation message (stderr)

Arcade.cpp: In function 'int main()':
Arcade.cpp:36:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |  for(int i=0;i<v.size();i++){
      |              ~^~~~~~~~~
#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...