fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. long long n,m,k,t[2500000],ans;
  4. bool flag=false;
  5. struct node{
  6. long long a,b;
  7. }arr[250000];
  8. bool cmp(node a,node b){
  9. return a.b>b.b;
  10. }
  11. int main() {
  12. cin>>n>>k>>m;
  13. for(int i=1;i<=n;i++){
  14. cin>>arr[i].a>>arr[i].b;
  15. }
  16. sort(arr+1,arr+n+1,cmp);
  17. for(int i=1;i<=k;i++){
  18. if(k-i+1==m){
  19. flag=true;
  20. }else{
  21. if(t[arr[i].a]==0){
  22. t[arr[i].a]++;
  23. ans+=arr[i].b;
  24. m--;
  25.  
  26. }else{
  27. ans+=arr[i].b;
  28. }
  29. }
  30. if(flag){
  31. for(int j=i;j<=k;j++){
  32. if(t[arr[j].a]==0 && k!=0){
  33. ans+=arr[j].b;
  34. t[arr[j].a]++;
  35. }else{
  36. k++;
  37. }
  38.  
  39. }
  40. cout<<ans;
  41. return 0;
  42. }
  43. }
  44. cout<<ans;
  45. return 0;
  46. }
Success #stdin #stdout 0s 5320KB
stdin
5 5 1
4 1000000000
5 1000000000
4 1000000000
5 1000000000
4 1000000000
stdout
5000000000