Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #define _USE_MATH_DEFINES
  2. #include<stdio.h>
  3. #include<iostream>
  4. #include<vector>
  5. #include<cmath>
  6. #include<algorithm>
  7. #include<map>
  8. #include<set>
  9. #include<sstream>
  10. #include<cstring>
  11. #include<numeric>
  12. #include<limits.h>
  13. using namespace std;
  14.  
  15. const int N = 1e5;
  16.  
  17.  
  18. set<pair<int, int>> a;
  19. int n;
  20. int d;
  21. int ans[N];
  22. bool used[N];
  23.  
  24. int main() {
  25.     scanf("%d%d", &n, &d);
  26.     for(int i = 0; i < n; i++){
  27.         int x;
  28.         scanf("%d", &x);
  29.         a.insert(make_pair(x, i));
  30.     }
  31.     int var = 1;
  32.     for(auto i : a){
  33.         if(!used[i.second]){
  34.             ans[i.second] = var;
  35.             auto it = a.lower_bound(make_pair(i.first + d + 1, -1));
  36.             while(it != a.end()){
  37.                 if(!used[it->second]){
  38.                     ans[it->second] = var;
  39.                     used[it->second] = true;
  40.                     it = a.lower_bound(make_pair(it->first + d + 1, -1));
  41.                 }
  42.                 else{
  43.                     ++it;
  44.                 }
  45.             }
  46.             var++;
  47.         }
  48.     }
  49.     printf("%d\n", var-1);
  50.     for(int i = 0; i < n; i++){
  51.         printf("%d ", ans[i]);
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement