Submission #547237

#TimeUsernameProblemLanguageResultExecution timeMemory
547237DP_196Global Warming (CEOI18_glo)C++14
100 / 100
123 ms7368 KiB
#include<bits/stdc++.h> using namespace std; const int N = 2e5 + 5; const int INF = (int) 1e9 + 7; int n, d, a[N], dp1[N], dp2[N], tmp[N], bit[N], c[N], res; vector<int> b; struct BIT { void update(int id, int val) { for (; id; id -= (id & (-id))) bit[id] = max(bit[id], val); } int get(int id) { int res = 0; for (; id <= n; id += (id & (-id))) res = max(res, bit[id]); return res; } } myBit; void init() { for (int i = 1; i <= n; i++) { dp1[i] = lower_bound(tmp + 1, tmp + res + 1, a[i]) - tmp; res = max(res, dp1[i]); tmp[dp1[i]] = a[i]; } for (int i = n; i >= 1; --i) { dp2[i] = myBit.get(c[i] + 1) + 1; myBit.update(c[i], dp2[i]); } } #define TASK "LIS" int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if (fopen(TASK".inp","r")) { freopen(TASK".inp","r",stdin); freopen(TASK".out","w",stdout); } cin >> n >> d; for (int i = 1; i <= n; i++) { cin >> a[i]; b.push_back(a[i]); } sort(b.begin(), b.end()); for (int i = 1; i <= n; i++) c[i] = lower_bound(b.begin(), b.end(), a[i]) - b.begin() + 1; init(); int result = 0; memset(bit, 0, sizeof bit); myBit.update(c[n], dp2[n]); for (int i = n - 1; i >= 1; i--) { int pos = upper_bound(b.begin(), b.end(), a[i] - d) - b.begin() + 1; result = max(result, dp1[i] + myBit.get(pos)); myBit.update(c[i], dp2[i]); } cout << result; return 0; }

Compilation message (stderr)

glo.cpp: In function 'int main()':
glo.cpp:39:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   39 |         freopen(TASK".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
glo.cpp:40:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |         freopen(TASK".out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#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...