Submission #358636

# Submission time Handle Problem Language Result Execution time Memory
358636 2021-01-26T03:02:35 Z sumit_kk10 Global Warming (CEOI18_glo) C++14
10 / 100
55 ms 3180 KB
#include <bits/stdc++.h>
#define fast ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL)
#define ll long long int
#define ld long double
using namespace std;
const int N = 1e6 + 5;
const int MOD = 1e9 + 7;


int main(){
    fast;
    long long int n, x;
    cin >> n >> x;
    vector<int> a(n);
    for(int i = 0; i < n; ++i)
        cin >> a[i];
    int left_dp[n + 1], right_dp[n + 1];
    vector<int> lis;
    left_dp[0] = 1;
    lis.push_back(a[0]);
    for(int i = 1; i < n; ++i){
        if(a[i] - x > lis.back()){
            lis.push_back(a[i]);
            left_dp[i] = lis.size();
        }
        else{
            int low = 0, high = lis.size() - 1, ans = -1;
            while(low <= high){
                int mid = (low + high) / 2;
                if(lis[mid] >= a[i]){
                    ans = mid;
                    high = mid - 1;
                }
                else
                    low = mid + 1;
            }
            if(ans != -1)
                lis[ans] = a[i];
            left_dp[i] = ans + 1;
        }
    }
    right_dp[n - 1] = 1;
    lis.clear();
    lis.push_back(a[n - 1]);
    for(int i = n - 2; i >= 0; --i){
        if(a[i] < lis.back()){
            lis.push_back(a[i]);
            right_dp[i] = lis.size();
        }
        else{
            int low = 0, ans = -1, high = lis.size();
            while(low <= high){
                int mid = (low + high) / 2;
                if(lis[mid] <= a[i] - x){
                    ans = mid;
                    high = mid - 1;
                }
                else
                    low = mid + 1; 
            }
            if(ans != -1)
                lis[ans] = a[i];
            right_dp[i] = ans + 1;
        }
    } 
    int mx = 0;
    for(int i = 0; i < n; ++i)
        mx = max(mx, right_dp[i] + left_dp[i] - 1);
    cout << mx << '\n';
    return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 50 ms 2668 KB Output is correct
2 Correct 49 ms 2668 KB Output is correct
3 Correct 55 ms 2668 KB Output is correct
4 Correct 49 ms 2668 KB Output is correct
5 Correct 27 ms 3180 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 876 KB Output is correct
2 Correct 12 ms 876 KB Output is correct
3 Correct 12 ms 876 KB Output is correct
4 Incorrect 7 ms 1132 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 13 ms 1516 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -