제출 #888450

#제출 시각아이디문제언어결과실행 시간메모리
888450kimGlobal Warming (CEOI18_glo)C++17
100 / 100
102 ms6604 KiB
#include<bits/stdc++.h> using namespace std; #define eb emplace_back int dp[200005],a[200005],dpL[200005],dpR[200005]; struct fenwick{ vector<int> bit; void init(int n){bit=vector<int>(n);} void upd(int i,int x){ for(;i<bit.size();i+=i&-i) bit[i]=max(bit[i],x); } int qr(int i){ int ret=0; for(;i>0;i-=i&-i) ret=max(ret,bit[i]); return ret; } }fw; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n,d; cin>>n>>d; int cnt=0; for(int i=1;i<=n;++i){ cin>>a[i]; int id=lower_bound(dp,dp+cnt,a[i])-dp; if(id==cnt) ++cnt; dp[id]=a[i]; dpL[i]=id+1; } cnt=0; for(int i=n;i>=1;--i){ int id=lower_bound(dp,dp+cnt,-a[i])-dp; if(id==cnt) ++cnt; dp[id]=-a[i]; dpR[i]=id+1; } vector<int> comp; for(int i=1;i<=n;++i) comp.eb(a[i]-d); sort(comp.begin(),comp.end()); comp.erase(unique(comp.begin(),comp.end()),comp.end()); fw.init(comp.size()+5); int ans=0; for(int i=1;i<=n;++i){ ans=max(ans,dpR[i]+fw.qr(lower_bound(comp.begin(),comp.end(),a[i])-comp.begin())); fw.upd(lower_bound(comp.begin(),comp.end(),a[i]-d)-comp.begin()+1,dpL[i]); } cout<<ans; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

glo.cpp: In member function 'void fenwick::upd(int, int)':
glo.cpp:11:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 |         for(;i<bit.size();i+=i&-i) bit[i]=max(bit[i],x);
      |              ~^~~~~~~~~~~
#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...