Submission #1096456

#TimeUsernameProblemLanguageResultExecution timeMemory
1096456quangnamoiracvl_ralaidecuGlobal Warming (CEOI18_glo)C++14
42 / 100
277 ms16464 KiB
#include<bits/stdc++.h> using namespace std; const int N=2e5+5, mod = 1e9; int n,k,a[N],st[4*N], dp[N], dpv[N],l[N], b[N]; map<int,int> s; void update(int id, int l, int r, int pos, int val){ if(pos < l || pos > r) return; if(l == r){ st[id] = val ; return; } int mid = (l+r)/2; update(id*2, l, mid, pos, val); update(id*2+1, mid+1, r, pos, val); st[id] = max(st[id*2] , st[id*2+1]) ; } int get(int id, int l, int r, int u, int v){ if(r < u || l > v) return 0; if(l >= u && r <= v) return st[id]; int mid = (l+r)/2; return max(get(id*2, l, mid, u, v) , get(id*2+1, mid+1, r, u, v)) ; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); bool cc = true; cin >> n >> k; for ( int i = 1; i <= n; i++ ) { cin >> a[i]; s[a[i]] = 1; } if ( !k ) cc = false; s[k]++; int d = 0; for ( auto v : s ) { d++; s[v.first] = d; } k = s[k]; for ( int i = 1; i <= n; i++ ) { a[i] = s[a[i]]; // yêu thảo nguyên vl } int ans = -1; for ( int i = 1; i <= n; i++ ) { dp[i] = get(1,1,d,1,a[i] - 1) + 1; ans = max( ans, dp[i]); update(1,1,d,a[i],dp[i]); } if ( !cc ) { cout << ans; return 0; } // for ( int i = 1; i <= n; i++ ) cout << dp[i] << " "; cout << endl; for ( int i = 1; i <= 4 * N; i++ ) st[i] = 0; for ( int i = n; i >= 1; i-- ) { dpv[i] = get( 1,1,n,a[i] + 1, n) + 1; ans = max( ans, dp[i] + get( 1, 1, n, a[i] - k + 1, n ) ); update( 1, 1, n, a[i] , dpv[i] ); } // for ( int i = 1; i <= n; i++ ) cout << dpv[i] << " "; cout << endl; cout << ans; }

Compilation message (stderr)

glo.cpp: In function 'int main()':
glo.cpp:58:46: warning: iteration 800019 invokes undefined behavior [-Waggressive-loop-optimizations]
   58 |     for ( int i = 1; i <= 4 * N; i++ ) st[i] = 0;
      |                                        ~~~~~~^~~
glo.cpp:58:24: note: within this loop
   58 |     for ( int i = 1; i <= 4 * N; i++ ) st[i] = 0;
      |                      ~~^~~~~~~~
glo.cpp:58:46: warning: 'void* __builtin_memset(void*, int, long unsigned int)' forming offset [3200080, 3200083] is out of the bounds [0, 3200080] of object 'st' with type 'int [800020]' [-Warray-bounds]
   58 |     for ( int i = 1; i <= 4 * N; i++ ) st[i] = 0;
      |                                        ~~~~~~^~~
glo.cpp:5:14: note: 'st' declared here
    5 | int n,k,a[N],st[4*N], dp[N], dpv[N],l[N], b[N]; map<int,int> s;
      |              ^~
glo.cpp:58:46: warning: 'void* __builtin_memset(void*, int, long unsigned int)' forming offset [3200080, 3200083] is out of the bounds [0, 3200080] of object 'st' with type 'int [800020]' [-Warray-bounds]
   58 |     for ( int i = 1; i <= 4 * N; i++ ) st[i] = 0;
      |                                        ~~~~~~^~~
glo.cpp:5:14: note: 'st' declared here
    5 | int n,k,a[N],st[4*N], dp[N], dpv[N],l[N], b[N]; map<int,int> s;
      |              ^~
#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...