Giatro

k-Multiple Free Set

Sep 29th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long ll;
  5. ll S[112345];
  6.  
  7. int binary(int x, int l, int r){
  8.     int m;
  9.     l--;
  10.     while(l < r-1){
  11.         m = (l+r)/2;
  12.         if(S[m] == x)
  13.             return m;
  14.         if(S[m] < x)
  15.             l = m;
  16.         else
  17.             r = m;
  18.     }
  19.     return -1;
  20. }
  21.  
  22. int main(){
  23.     ll n, k;
  24.     ll r;
  25.     scanf("%lld %lld", &n, &k);
  26.     int count = n;
  27.     for(int i = 0; i < n; i++)
  28.         scanf("%lld", &(S[i]));
  29.     sort(S, S+n);
  30.  
  31.     for(int i = 0; i < n; i++){
  32.         if(S[i] != 0){ 
  33.             r = binary(k*S[i], i, min(n, k*S[i]));
  34.             if(r != -1){
  35.                 S[r] = 0;  
  36.                 count--;
  37.             }
  38.         }
  39.     }
  40.     printf("%d\n", count);     
  41.     return 0;
  42. }
Add Comment
Please, Sign In to add comment