Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <algorithm>
- #include <cmath>
- #include <vector>
- #include <set>
- #include <map>
- #include <unordered_set>
- #include <unordered_map>
- #include <queue>
- #include <ctime>
- #include <cassert>
- #include <complex>
- #include <numeric>
- #include <string>
- #include <cstring>
- #include <chrono>
- #include <random>
- #include <queue>
- #include <bitset>
- using namespace std;
- typedef long long ll;
- typedef pair<int, int> pii;
- typedef pair<ll, int> pli;
- typedef pair<ll, ll> pll;
- typedef long double ld;
- #define mp make_pair
- #define str(a) a.c_str()
- mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- const int N = 3e5;
- int n, m, k, t;
- int a[N];
- vector<pii> lb[N];
- vector<int> suff[N];
- int main() {
- ios::sync_with_stdio(false);
- // freopen("input.txt", "r", stdin);
- // freopen("output.txt", "w", stdout);
- int m, n, k, t;
- cin >> m >> n >> k >> t;
- for (int i = 0; i < m; ++i) {
- cin >> a[i];
- }
- sort(a, a + m);
- reverse(a, a + m);
- for (int i = 0; i < k; ++i) {
- int l, r, d;
- cin >> l >> r >> d;
- lb[l].push_back(mp(d, r));
- }
- for (int i = 0; i <= n + 1; ++i) {
- sort(lb[i].begin(), lb[i].end());
- suff[i].resize(lb[i].size());
- for (int j = lb[i].size() - 1; j > -1; --j) {
- suff[i][j] = lb[i][j].second;
- if (j + 1 < lb[i].size()) suff[i][j] = max(suff[i][j], suff[i][j + 1]);
- }
- }
- int lo = 0, hi = m + 1;
- while (hi - lo > 1) {
- int mid = (lo + hi) / 2;
- int worst = a[mid - 1];
- int have = 0, mxwas = 0;
- for (int i = 0; i <= n + 1; ++i) {
- int l = -1, r = lb[i].size();
- while (r - l > 1) {
- int mid = (l + r) / 2;
- if (lb[i][mid].first <= worst) {
- l = mid;
- }
- else {
- r = mid;
- }
- }
- l++;
- if (l < lb[i].size()) {
- mxwas = max(mxwas, suff[i][l]);
- }
- }
- have = mxwas * 2 + n + 1;
- if (have <= t) {
- lo = mid;
- }
- else {
- hi = mid;
- }
- }
- cout << lo << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement