Submission #258561

#TimeUsernameProblemLanguageResultExecution timeMemory
258561BertedGlobal Warming (CEOI18_glo)C++14
27 / 100
239 ms5640 KiB
#include <iostream> #include <algorithm> #include <vector> #include <set> #define pii pair<int, int> #define ppi pair<pii, int> #define fst first #define snd second using namespace std; int n, x, ar[200001]; vector<int> coord; int fwk[2][200001] = {}; inline void upd(int t, int x, int v) { x = prev(upper_bound(coord.begin(), coord.end(), x)) - coord.begin(); for (; x < coord.size(); x += x & (-x)) {fwk[t][x] = max(fwk[t][x], v);} } inline int qry(int t, int x) { int ret = 0; x = prev(upper_bound(coord.begin(), coord.end(), x)) - coord.begin(); for (; x; x -= x & (-x)) {ret = max(ret, fwk[t][x]);} return ret; } int main() { ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> x; coord.push_back(0); for (int i = 0; i < n; i++) { cin >> ar[i]; coord.push_back(ar[i]); } sort(coord.begin(), coord.end()); coord.resize(unique(coord.begin(), coord.end()) - coord.begin()); int res = 0; for (int i = 0; i < n; i++) { int ret = qry(0, ar[i] - 1) + 1; upd(0, ar[i], ret); res = max(ret, res); ret = qry(0, ar[i] + x - 1) + 1; upd(1, ar[i], ret); res = max(ret, res); ret = qry(1, ar[i] - 1) + 1; upd(1, ar[i], ret); res = max(ret, res); } cout << res << "\n"; return 0; }

Compilation message (stderr)

glo.cpp: In function 'void upd(int, int, int)':
glo.cpp:18:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (; x < coord.size(); x += x & (-x)) {fwk[t][x] = max(fwk[t][x], v);}
         ~~^~~~~~~~~~~~~~
#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...