제출 #582437

#제출 시각아이디문제언어결과실행 시간메모리
582437Mr_HusanboyGlobal Warming (CEOI18_glo)C++14
62 / 100
106 ms17460 KiB
// Muallif: Mansuraliyev Husanboy Murotali o'g'li >> NamPS #pragma GCC optimize("Ofast") #include<bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL) #define all(a) a.begin(), a.end() #define F first #define S second #define fp(a,i,c) for(int (a) = (i); (a) < (c); (a)++) #define fm(a,i,c) for(int (a) = (i); (a) >= (c); (a)--) #define vii vector<int> #define vll vector<ll> // 0-9 >> 48-57; A-Z>>65-90 and a-z>>97-122 respectively; void solve(){ ll n; cin>>n; //t.resize(4*n); vll a;a.resize(n); ll x; cin>>x; for(ll i=0;i<n;i++) cin>>a[i]; set<ll> st; vector<pair<ll,ll>> l,r(n); for(int i=0;i<n;i++){ auto it=st.lower_bound(a[i]); if(it!=st.end()) st.erase(it); st.insert(a[i]); l.push_back({st.size(),*--st.end()-x}); } st.clear(); for(ll i=n-1;i>=0;i--){ auto it=st.lower_bound(-a[i]); if(it!=st.end()) st.erase(it); st.insert(-a[i]); r[i]={st.size(),-*--st.end()}; } // for(auto u:l) cout<<u.F<<' '<<u.S<<endl; vector<ll> close(n); r.push_back({0,1e10}); stack<ll> s; s.push(n); for(ll i=n-1;i>=0;i--){ while(r[s.top()].S<=l[i].S) s.pop(); //cout<<l[i].S<<" "<<r[s.top()].S<<"\n"; close[i]=s.top(); s.push(i); } ll ans=0; for(ll i=0;i<n;i++){ ans=max(ans,l[i].F+r[close[i]].F); } cout<<ans; } int main(){ ios; // int t; cin>>t; while(t--) solve(); }
#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...