Submission #582438

#TimeUsernameProblemLanguageResultExecution timeMemory
582438Mr_HusanboyGlobal Warming (CEOI18_glo)C++14
75 / 100
124 ms17504 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]; if(n<=1000){ int ans=0; for(int j=0;j<n;j++){ for(int i=0;i<j;i++){ a[i]-=x; } set<int> st; set<int>::iterator it; st.clear(); for(int i=0; i<n; i++) { it = st.lower_bound(a[i]); if (it != st.end()) st.erase(it); st.insert(a[i]); } ans=max(ans,int(st.size())); for(int i=0;i<j;i++) a[i]+=x; } cout<<ans<<"\n"; return; } 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...