제출 #748651

#제출 시각아이디문제언어결과실행 시간메모리
748651peraGlobal Warming (CEOI18_glo)C++14
0 / 100
221 ms11484 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define ll long long #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() const ll mod = 1e9 + 7; int main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int n , x;cin >> n >> x; vector<int> a(n + 1) , s(n + 1); set<int> dp; int ans = 0; for(int i = 1;i <= n;i ++){ cin >> a[i]; auto it = dp.lower_bound(a[i]); if(it == dp.end()) dp.insert(a[i]); else{ dp.erase(it); dp.insert(a[i]); } s[i] = (int)dp.size(); ans = max(ans , s[i]); } dp.clear(); map<int , int> p; for(int i = n;i >= 1;i --){ auto d = dp.lower_bound(x - a[i]); ans = max(ans , s[i] + p[*d]); auto it = dp.lower_bound(-a[i]); if(it == dp.end()) dp.insert(-a[i]) , p[-a[i]] = dp.size() - 1; else{ dp.erase(it); dp.insert(-a[i]); p[-a[i]] = dp.size() - 1; } } cout << ans << endl; }
#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...