jatarc2004

Untitled

Apr 13th, 2025
181
0
Never
7
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4.  
  5. const int MN = 2e5 + 5;
  6. int f[MN];
  7. int invf[MN];
  8.  
  9. const int MOD = 1e9 + 7;
  10.  
  11. int Binexpitr(int a,int b){
  12.     int ans = 1;
  13.     while(b){
  14.         if(b&1){
  15.             ans = (ans* 1ll *a)%MOD;
  16.         }
  17.         a = (a* 1ll *a)%MOD;
  18.         b >>= 1;
  19.     }
  20.     return ans;
  21. }
  22.  
  23. int ncr(int n, int k){
  24.     if(n<k){
  25.         return 0;
  26.     }
  27.     int ans = f[n];
  28.     ans *= invf[k];
  29.     ans %= MOD;
  30.     ans *= invf[n-k];
  31.     ans %= MOD;
  32.     ans += MOD;
  33.     ans %= MOD;
  34.     return ans;
  35. }
  36.  
  37. signed main(){
  38.     f[0] = 1;
  39.     for(int i=1;i<MN;i++){
  40.         f[i] = (f[i-1]*i)%MOD;
  41.     }
  42.  
  43.     invf[MN - 1] = Binexpitr(f[MN-1],MOD-2);
  44.     for(int i = MN-2;i>=0;i--){
  45.         invf[i] = (invf[i+1]*(i+1))%MOD;
  46.     }
  47.     int n,k;
  48.     cin>>n>>k;
  49.  
  50.     map<int,int> m;
  51.     map<int,int> m2;
  52.  
  53.     for(int i=0;i<n;i++){
  54.         int x,y;
  55.         cin>>x>>y;
  56.         m[x]++;
  57.         m2[y]++;
  58.     }
  59.  
  60.     vector<pair<int,int>> v;
  61.     for(auto it : m){
  62.         v.push_back({it.first,-1*it.second});
  63.     }
  64.     for(auto it : m2){
  65.         v.push_back({it.first,it.second});
  66.     }
  67.  
  68.     sort(v.begin(),v.end());
  69.     int k1 = -1*v[0].second;
  70.     int ans = 0;
  71.     for(int i=1;i<v.size();i++){
  72.         int di = v[i].first - v[i-1].first;
  73.         if(v[i-1].second > 0){
  74.             di--;
  75.         }
  76.         if(v[i].second > 0){
  77.             di++;
  78.         }
  79.         if(n-k1 < k){
  80.             ans += (di)*((ncr(n,k)));
  81.         }
  82.         else{
  83.             ans += (di)*((ncr(n,k)) - ncr(n-k1,k));
  84.         }
  85.         ans %= MOD;
  86.         ans += MOD;
  87.         ans %= MOD;
  88.         k1 += -1*(v[i].second);
  89.     }
  90.  
  91.     cout<<ans<<'\n';
  92.  
  93. }
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
Add Comment
Please, Sign In to add comment