Submission #786095

#TimeUsernameProblemLanguageResultExecution timeMemory
786095makanhuliaExhibition (JOI19_ho_t2)C++17
0 / 100
1 ms212 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; const ll MAXN = 1e5 + 5; const ll MAX = 1e18; ll n, m, bingkai[MAXN], ans[MAXN]; pll arr[MAXN], seg[4*MAXN]; // {Size, Value} pll merge(pll a, pll b) { return min(a, b); } void build(ll pos, ll l, ll r){ if (l == r) { seg[pos] = {arr[l].second, l}; return ; } ll mid = (l+r)/2; build(pos*2, l, mid); build(pos*2+1, mid+1, r); seg[pos] = merge(seg[pos*2], seg[pos*2+1]); } void update(ll pos, ll l, ll r, ll x) { if (l > x || r < x) { return ; } if (x <= l && r <= x) { seg[pos] = {MAX, seg[pos].second}; return ; } ll mid = (l+r)/2; update(pos*2, l, mid, x); update(pos*2+1, mid+1, r, x); seg[pos] = merge(seg[pos*2], seg[pos*2+1]); } pll query(ll pos, ll l, ll r, ll a, ll b) { if (l > b || r < a) { return {MAX, MAX}; } if (a <= l && r <= b) { return seg[pos]; } ll mid = (l+r)/2; return merge(query(pos*2, l, mid, a, b), query(pos*2+1, mid+1, r, a, b)); } ll lis() { vector<ll> vec; for (int i = 1; i <= m; ++i) { ll now = ans[i]; // cout << i << " " << now << "\n"; if (now == MAX) { continue ; } ll idx = upper_bound(vec.begin(), vec.end(), now) - vec.begin(); if (idx == vec.size()) { vec.push_back(now); } else { vec[idx] = now; } } return vec.size(); } int main(){ cin >> n >> m; for (int i = 1; i <= n; ++i) { cin >> arr[i].first >> arr[i].second; } sort(arr+1, arr+n+1); for (int i = 1; i <= m; ++i) { cin >> bingkai[i]; } sort(bingkai+1, bingkai+1+m); build(1, 1, n); for (int i = 1; i <= m; ++i) { ans[i] = MAX; } for (int i = 1; i <= m; ++i) { ll bingnow = bingkai[i]; pll tocek = {bingnow, MAX}; ll idx = upper_bound(arr+1, arr+1+n, tocek) - (arr+1); // cout << i << " " << bingnow << " " << idx << "\n"; if (idx == 0) { continue ; } pll hasil = query(1, 1, n, 1, idx); // {Value, Idx} if (hasil.first == MAX) { continue ; } if (ans[i] <= hasil.first) { continue ; } ans[i] = hasil.first; update(1, 1, n, hasil.second); } cout << lis() << "\n"; return 0; }

Compilation message (stderr)

joi2019_ho_t2.cpp: In function 'll lis()':
joi2019_ho_t2.cpp:74:13: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |     if (idx == vec.size())
      |         ~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...