제출 #582253

#제출 시각아이디문제언어결과실행 시간메모리
582253vbeeRabbit Carrot (LMIO19_triusis)C++14
100 / 100
112 ms10988 KiB
#include <bits/stdc++.h> #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define ii pair<int,int> #define vii vector<ii> #define vi vector<int> #define fi first #define se second #define TASK "rabbitcarrot" #define ll long long #define pll pair<ll, ll> #define vll vector<ll> #define vpll vector<pll> #define pb push_back #define MASK(i) (1 << (i)) #define BIT(x, i) ((x >> (i)) & 1) using namespace std; const int oo = 1e9 + 7; const ll loo = (ll)1e18 + 7; const int N = 2e5 + 7; ll n, a[N], m, c[N]; struct segtree{ vector<int> t; segtree(){ t.resize(N * 4 + 7); } void update(int v, int lt, int rt, int pos, int value){ if (lt == rt) return (void)(t[v]= value); int middle = (rt + lt) / 2; if (pos <= middle) update(v * 2, lt, middle, pos, value); else update(v * 2 + 1, middle + 1, rt, pos, value); t[v] = max(t[v * 2], t[v * 2 + 1]); } int getmax(int v, int lt, int rt, int l, int r){ if (l > r) return -oo; if (lt == l && rt == r) return t[v]; int middle = (rt + lt) / 2; return max(getmax(v * 2, lt, middle, l, min(middle, r)), getmax(v * 2 + 1, middle + 1, rt, max(middle + 1, l), r)); } }; vector<ll> id; int newid[N]; int getcompressedvalue(ll x){ return lower_bound(all(id), x) - id.begin(); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); // freopen(TASK".inp", "r", stdin); // freopen(TASK".out", "w", stdout); cin >> n >> m; segtree seg; for (int i = 1; i <= n; i++){ cin >> a[i]; c[i] = m * i - a[i]; id.pb(c[i]); } sort(all(id)); id.resize(unique(all(id)) - id.begin()); for (int i = 1; i <= n; i++){ newid[i] = getcompressedvalue(c[i]) + 2; } int res = 0; // for (int i = 1; i <= n; i++) cout << c[i] << " "; for (int i = 1; i <= n; i++){ if (c[i] < 0) continue; int temp = seg.getmax(1, 1, N, 1, newid[i]) + 1; res = max(res, temp); seg.update(1, 1, N, newid[i], temp); } cout << n - res; 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...