제출 #582402

#제출 시각아이디문제언어결과실행 시간메모리
582402Mr_HusanboyGlobal Warming (CEOI18_glo)C++14
55 / 100
2070 ms10084 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(){
	int n; ll x; cin>>n>>x;
	ll a[n];
	for(int i=0;i<n;i++) cin>>a[i];
	if(x==0){
	set<int> st;
	set<int>::iterator it;
	for(int i=0; i<n; i++) {
	    it = st.lower_bound(a[i]);
	    if (it != st.end()) st.erase(it);
	    st.insert(a[i]);
	}
	cout<<st.size()<<endl;
//	for(auto u:st) cout<<u<<" ";
	return;
	}
	if(x==1e9){
	vector<int> l,r;
	set<int> st;
	set<int>::iterator it;
	for(int i=0; i<n; i++) {
	    it = st.lower_bound(a[i]);
	    if (it != st.end()) st.erase(it);
	    st.insert(a[i]);
	    l.push_back(st.size());
	}
	st.clear(); int ans=0;
	reverse(a,a+n);
	for(int i=0; i<n; i++) {
	    it = st.lower_bound(-a[i]);
	    if (it != st.end()) st.erase(it);
	    st.insert(-a[i]);
	    r.push_back(st.size());
	}
	reverse(all(r));
	r.push_back(0);
	for(int i=0;i<n;i++){
		ans=max(l[i]+r[i+1],ans);
	}
	cout<<ans<<"\n";return;
	}
	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()));
		//cout<<j<<": "<<st.size()<<"\n";
		for(int i=0;i<j;i++) a[i]+=x;
	}
	cout<<ans<<"\n";
}
 
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...