제출 #444574

#제출 시각아이디문제언어결과실행 시간메모리
444574fuad27Global Warming (CEOI18_glo)C++14
25 / 100
2086 ms3552 KiB
    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    int CeilIndex(vector<int>& v, int l, int r, int key)
    {
    	while (r - l > 1) {
    		int m = l + (r - l) / 2;
    		if (v[m] >= key)
    			r = m;
    		else
    			l = m;
    	}
     
    	return r;
    }
     
    int lis(vector<int>& v)
    {
    	if (v.size() == 0)
    		return 0;
    	vector<int> tail(v.size(), 0);
    	int length = 1; 
    	tail[0] = v[0];
    	for (size_t i = 1; i < v.size(); i++) {
     
    		if (v[i] < tail[0])
    			tail[0] = v[i];
    		else if (v[i] > tail[length - 1])
    			tail[length++] = v[i];
    		else
    			tail[CeilIndex(tail, -1, length - 1, v[i])] = v[i];
    	}
     
    	return length;
    }
     
    int32_t main()
    {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);	
    	int n, x;
    	cin >> n >> x;
    	vector<int> v;
    	for(int i = 0;i<n;i++) {
    		int p;
    		cin >> p;
    		v.push_back(p);
    	}
    	int MAX = lis(v);
    	if(x!=0) {
    	for(int i = 0;i<n;i++) {
    		for(int j = i;j<n;j++) {
    			for(int d = -x;d<=x;d++) {
    				for(int k = i;k<j;k++) {
    					v[k] += d;
    				}
    				MAX = max(MAX, lis(v));
    				for(int k = i;k<j;k++)v[k]-=d;
    			}
    		}
    	}
    	}
    	cout<<MAX<<endl;
    	return 0;
    }
#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...