제출 #1096435

#제출 시각아이디문제언어결과실행 시간메모리
1096435quangnamoiracvl_ralaidecuGlobal Warming (CEOI18_glo)C++14
5 / 100
134 ms15944 KiB
#include<bits/stdc++.h> #define int long long using namespace std; const int N=1e5+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); cin >> n >> k; for ( int i = 1; i <= n; i++ ) { cin >> a[i]; s[a[i]] = 1; } 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; update(1,1,d,a[i],dp[i]); } // 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; }

컴파일 시 표준 에러 (stderr) 메시지

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