Submission #668814

#TimeUsernameProblemLanguageResultExecution timeMemory
668814asdf1234codingGlobal Warming (CEOI18_glo)C++14
0 / 100
43 ms4476 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <climits>
using namespace std;

#define problemname "glo"
#define pii pair<int,int>
#define vi vector<int>
#define pb push_back
#define MOD (int)1e9+7
#define ll long long
#define ff first
#define ss second

bool ckmin(int& a, int b) {return a>b?a=b,true:false;}
bool ckmax(int& a, int b) {return a<b?a=b,true:false;}

int main () {
    ios_base::sync_with_stdio(0); cin.tie(0);
    // freopen (problemname ".in", "r", stdin); freopen(problemname ".out", "w", stdout);
    int n,x;cin>>n>>x;
    vi a(n); for(auto& x: a) cin>>x;
    vi left;
    vi dp;
    for(auto lmao:a) {
        int pos = lower_bound(dp.begin(), dp.end(), lmao) - dp.begin();
        if(pos == dp.size()) {
            dp.pb(x);
        } else {
            dp[pos]=lmao;
        }
        left.pb(dp.size());
    }
    dp.clear();
    vi right;
    for(int i=n-1; i>=0; i--) {
        a[i]=-a[i];
        int pos = lower_bound(dp.begin(), dp.end(), a[i]) - dp.begin();
        if(pos == dp.size()) {
            dp.pb(a[i]);
        } else {
            dp[pos]=a[i];
        }
        right.pb(dp.size());
        a[i]=-a[i];
    }
    reverse(right.begin(),right.end());

    // for(int i=0; i<n; i++) {
    //     cout<<left[i]<<' ';
    // }
    // cout<<endl;
    // for(int i=0; i<n; i++) {
    //     cout<<right[i]<<' ';
    // }

    int ans =right[0];
    for(int i=0; i<n-1; i++) {
        if(abs(a[i]-a[i+1] < x))
            ckmax(ans, left[i]+right[i+1]);
        else
            ckmax(ans, left[i]+right[i+1]-1);
    }
    ckmax(ans, left[n-1]);
    cout<<ans<<endl;
    return 0;
}

Compilation message (stderr)

glo.cpp: In function 'int main()':
glo.cpp:28:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |         if(pos == dp.size()) {
      |            ~~~~^~~~~~~~~~~~
glo.cpp:40:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |         if(pos == dp.size()) {
      |            ~~~~^~~~~~~~~~~~
#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...