fork download
  1. #include <bits/stdc++.h>
  2.  
  3. #define int long long
  4. #define F first
  5. #define S second
  6. #define pb push_back
  7. #define pii pair<int,int>
  8.  
  9. using namespace std;
  10.  
  11. const int MX=2e5+9;
  12. vector <pii> road[MX];
  13. int a[MX];
  14.  
  15. int f(int x){
  16. int ans=0;
  17. int maxx=-1;
  18. for(int i=0;i<MX;i++){
  19. for(int j=0;j<road[i].size();j++){
  20. pii a=road[i][j];
  21. if(a.S>x){
  22. maxx=max(maxx,a.F);
  23. }
  24. }
  25. if(i<=maxx){
  26. ans+=2;
  27. }
  28. }
  29. return ans;
  30. }
  31.  
  32. int BS(int n,int m,int t){
  33. int l=0,r=m+1;
  34. while(l+1<r){
  35. int mid=(l+r)/2;
  36. if(f(a[mid])+n+1<=t){
  37. l=mid;
  38. }
  39. else{
  40. r=mid;
  41. }
  42. }
  43. return l;
  44. }
  45.  
  46. int32_t main(){
  47. ios::sync_with_stdio(0);cin.tie(0);
  48. int m,n,k,t;
  49. cin>>m>>n>>k>>t;
  50. for(int i=1;i<=m;i++){
  51. cin>>a[i];
  52. }
  53. a[0]=1e9;
  54. sort(a+1,a+m+1);
  55. reverse(a+1,a+m+1);
  56. for(int i=0;i<k;i++){
  57. int l,r,d;
  58. cin>>l>>r>>d;
  59. road[l].pb({r,d});
  60. }
  61. cout<<BS(n,m,t);
  62. return 0;
  63. }
  64.  
Success #stdin #stdout 0s 8240KB
stdin
5 6 4 14
1 2 3 4 5
1 5 2
1 2 5
2 3 5
3 5 3
stdout
3