Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. struct data
  6. {
  7.     long long val;
  8.  
  9.     long long mod;
  10.  
  11. } arr[10005];
  12.  
  13. long long m;
  14.  
  15. bool cmp(data l,data r)
  16. {
  17.     if(l.mod==r.mod)
  18.     {
  19.         long long a = abs(l.val)%2;
  20.  
  21.         long long b = abs(r.val)%2;
  22.  
  23.         if(a==1 && b==1)
  24.         {
  25.             return l.val>r.val;
  26.         }
  27.         else if(a==0 && b==0)
  28.         {
  29.             return l.val<r.val;
  30.         }
  31.         else
  32.         {
  33.             if(a==0 && b==1)
  34.             {
  35.                 return 0;
  36.             }
  37.             else
  38.             {
  39.                 return 1;
  40.             }
  41.         }
  42.     }
  43.     else
  44.     {
  45.         return l.mod<r.mod;
  46.     }
  47. }
  48.  
  49. int main()
  50. {
  51.     long long n,i;
  52.  
  53.     while(scanf("%lld%lld",&n,&m)==2)
  54.     {
  55.         if(n==0 && m==0)
  56.         {
  57.             printf("0 0\n");
  58.             break;
  59.         }
  60.  
  61.         for(i=1; i<=n; i++)
  62.         {
  63.             scanf("%lld",&arr[i].val);
  64.  
  65.             arr[i].mod = arr[i].val%m;
  66.         }
  67.  
  68.         sort(arr+1,arr+n+1,cmp);
  69.  
  70.         printf("%lld %lld\n",n,m);
  71.  
  72.         for(i=1; i<=n; i++)
  73.         {
  74.             printf("%lld\n",arr[i].val);
  75.         }
  76.     }
  77.  
  78.     return 0;
  79. }