#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N=2e5+3;
int m,n,k,t,a[N];
vector<pair<int ,int >>sum[N];
bool check(int mid) {
int ans=0,now=0;
for(int i=1;i<=n;i++) {
for(auto [x,y]: sum[i])
if(y>a[mid]) now=max(now,x);
if(i<=now) ans+=2;
}
if(ans+n+1<=t) return 1;
else return 0;
}
void solve() {
cin>>m>>n>>k>>t;
for(int i=1; i<=m; i++) cin>>a[i];
for(int i=1; i<=k; i++) {
int l,r,x;
cin>>l>>r>>x;
sum[l].push_back({r,x});
}
sort(a+1,a+m+1,greater<int>());
a[0]=1e9;
int l=0,r=m;
while(l<r) {
int mid=(l+r+1)/2;
if(check(mid)) l=mid;
else r=mid-1;
}
cout<<l<<endl;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
// int t; cin>>t; while(t--)
solve();
return 0;
}
169. Majority Element | 119. Pascal's Triangle II |
409. Longest Palindrome | 1574A - Regular Bracket Sequences |
1574B - Combinatorics Homework | 1567A - Domino Disaster |
1593A - Elections | 1607A - Linear Keyboard |
EQUALCOIN Equal Coins | XOREQN Xor Equation |
MAKEPAL Weird Palindrome Making | HILLSEQ Hill Sequence |
MAXBRIDGE Maximise the bridges | WLDRPL Wildcard Replacement |
1221. Split a String in Balanced Strings | 1002. Find Common Characters |
1602A - Two Subsequences | 1555A - PizzaForces |
1607B - Odd Grasshopper | 1084A - The Fair Nut and Elevator |
1440B - Sum of Medians | 1032A - Kitchen Utensils |
1501B - Napoleon Cake | 1584B - Coloring Rectangles |
1562B - Scenes From a Memory | 1521A - Nastia and Nearly Good Numbers |
208. Implement Trie | 1605B - Reverse Sort |
1607C - Minimum Extraction | 1604B - XOR Specia-LIS-t |