Submission #253182

#TimeUsernameProblemLanguageResultExecution timeMemory
253182BertedRabbit Carrot (LMIO19_triusis)C++14
100 / 100
147 ms4644 KiB
#include <iostream> #include <algorithm> #define pii pair<int, int> #define fst first #define snd second using namespace std; const int INF = 2e6; int n, m; pii ar[200001] = {}; int fwk[200002] = {}; inline void upd(int x, int v) { for (; x <= n + 1; x += x & (-x)) {fwk[x] = max(fwk[x], v);} } inline int qry(int x) { int ret = -INF; for (; x; x -= x & (-x)) {ret = max(ret, fwk[x]);} return ret; } int main() { cin >> n >> m; ar[0] = {-n * m, 1}; for (int i = 1; i <= n; i++) { cin >> ar[i].fst; ar[i].fst += (n - i) * m; ar[i].fst = -ar[i].fst; ar[i].snd = i + 1; } sort(ar, ar + n + 1); for (int i = 1; i <= n + 1; i++) {fwk[i] = -INF;} int i, mx = 1; for (i = 0; i <= n && ar[i].snd > 1; i++); upd(1, 1); for (i++; i <= n; i++) { int ret = qry(ar[i].snd - 1) + 1; mx = max(mx, ret); upd(ar[i].snd, ret); } cout << n + 1 - mx << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...