fork download
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. struct input {
  8. int num;
  9. int mod;
  10. } a[10000 + 10];
  11.  
  12. int n;
  13. int m;
  14.  
  15. bool odd(int x) {
  16. if (x < 0)
  17. x *= -1;
  18. if (x % 2)
  19. return true;
  20. return false;
  21. }
  22.  
  23. bool even(int x) {
  24. if (x < 0)
  25. x *= -1;
  26. if (x % 2 == 0)
  27. return true;
  28. return false;
  29. }
  30.  
  31. bool operator<(input a, input b) {
  32. if (a.mod < b.mod)
  33. return true;
  34.  
  35. if (a.mod == b.mod) {
  36. if (odd(a.num) && even(b.num))
  37. return true;
  38. if (odd(a.num) && odd(b.num) && a.num > b.num)
  39. return true;
  40. if (even(a.num) && even(b.num) && a.num < b.num)
  41. return true;
  42. }
  43.  
  44. return false;
  45. }
  46.  
  47. int main() {
  48. while (scanf("%d %d", &n, &m)) {
  49. if (n == 0 && m == 0) {
  50. printf("0 0\n");
  51. break;
  52. }
  53.  
  54. printf("%d %d\n", n, m);
  55.  
  56. for (int i = 0; i < n; i++) {
  57. scanf("%d", &a[i].num);
  58. a[i].mod = a[i].num % m;
  59. }
  60. sort(a, a + n);
  61. for (int i = 0; i < n; i++)
  62. printf("%d\n", a[i].num);
  63.  
  64. }
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0s 3424KB
stdin
15 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3 3
9
12
10
0 0
stdout
15 3
15
9
3
6
12
13
7
1
4
10
11
5
2
8
14
3 3
9
12
10
0 0