fork download
  1. #include <bits/stdc++.h>
  2. #include <chrono>
  3. using namespace std;
  4. using namespace chrono;
  5. // "AJEET JAIN"----"JAI JINENDRA"
  6. /* "णमो अरिहंताणं",
  7.   "णमो सिद्धाणं",
  8.   "णमो आयरियाणं",
  9.   "णमो उवज्झायाणं",
  10.   "णमो लोए सव्वसाहूणं",
  11.   "",
  12.   "एसो पंच नमोक्कारो, सव्व पावप्पणासणो",
  13.   "मंगलाणं च सव्वेसिं, पडमं हवै मंगलं", */
  14.  
  15.  
  16. // Aliases to op
  17. using ll = long long;
  18. using ull = unsigned long long;
  19. using ld = double;
  20. using vll = vector<ll>;
  21.  
  22.  
  23. // Constants
  24. constexpr ll INF = 4e18;
  25. constexpr ld EPS = 1e-9;
  26. constexpr ll MOD = 1e9 + 7;
  27.  
  28.  
  29.  
  30. // Macros
  31. #define F first
  32. #define S second
  33. #define all(x) begin(x), end(x)
  34. #define allr(x) rbegin(x), rend(x)
  35. #define py cout<<"YES\n";
  36. #define pn cout<<"NO\n";
  37. #define forn(i,n) for(int i=0;i<n;i++)
  38. #define for1(i,n) for(int i=1;i<=n;i++)
  39.  
  40. // #define insert push_back
  41. #define pb push_back
  42. #define MP make_pair
  43. #define endl '\n'
  44.  
  45. /*
  46.   remove substring or subarray ---> try to think about sliding w
  47.  
  48.   */
  49.  
  50. /*
  51.  
  52.   Golden Rule
  53.  
  54.   1) problem is easy
  55.   2) proofs is easy
  56.   3) implementation is easy
  57.  
  58.   /*
  59.   ROUGH --
  60.  
  61.   */
  62.  
  63. void AJNJ(){
  64. ll n,k;
  65. cin>>n>>k;
  66. ll arr[n][3];
  67. for(int i = 0 ; i < n ; i++){
  68. for(int j = 0 ; j < 3 ; j++){
  69. cin >> arr[i][j];
  70. }
  71. }
  72. ll sum_a = 0 , sum_b = 0;
  73.  
  74. for(int i = 0 ; i < n ; i++){
  75. sum_a += arr[i][1];
  76. sum_b += arr[i][2];
  77. }
  78.  
  79. if(sum_a < k || sum_b < k){
  80. cout << "-1" << endl;
  81. return;
  82. }
  83. vector<ll> v_a , v_b , v_a_b;
  84.  
  85. for(int i = 0 ; i < n ; i++){
  86. if(arr[i][1] == 1 && arr[i][2] == 0){
  87. v_a.push_back(arr[i][0]);
  88. }
  89. if(arr[i][1] == 0 && arr[i][2] == 1){
  90. v_b.push_back(arr[i][0]);
  91. }
  92. if(arr[i][1] == 1 && arr[i][2] == 1){
  93. v_a_b.push_back(arr[i][0]);
  94. }
  95. }
  96.  
  97. sort(all(v_a));
  98. sort(all(v_b));
  99. sort(all(v_a_b));
  100.  
  101. for(int i = 0 ; i < min(v_a.size() , v_b.size()) ; i++){
  102. v_a_b.push_back(v_a[i] + v_b[i]);
  103. }
  104. sort(all(v_a_b));
  105. ll ans = 0;
  106. for(int i = 0 ; i < v_a_b.size() ; i++){
  107. ans += v_a_b[i];
  108. if(i + 1 == k){
  109. break;
  110. }
  111. }
  112.  
  113. cout << ans << endl;
  114.  
  115. }
  116.  
  117.  
  118. int main(){
  119. ios::sync_with_stdio(0);
  120. cin.tie(0);
  121. cout.tie(0);
  122. int T = 1;
  123. // cin>>T;
  124. auto start1 = high_resolution_clock::now();
  125. while(T--){
  126. AJNJ();
  127. }
  128. auto stop1 = high_resolution_clock::now();
  129. auto duration = duration_cast<microseconds>(stop1 - start1);
  130. cerr << "Time: " << duration . count() / 1000 << " ms" << endl;
  131.  
  132. return 0;
  133. }
Success #stdin #stdout #stderr 0.01s 5292KB
stdin
Standard input is empty
stdout
0
stderr
Time: 0 ms