#include<bits/stdc++.h>
using namespace std;
#define ran 111111
int e[ran];
int m;
int chk(int x){
int res = 0;
for(int i=x; i<ran; i+=m)
res += e[i];
// printf("%d\n",res);
return res/2;
}
int chk2(int x){
int A = 0, B = 0, C = 0, D = 0;
for(int i=x; i<ran; i+=m){
A += e[i]/2;
C += e[i];
}
for(int i=m-x; i<ran; i+=m){
B += e[i]/2;
D += e[i];
}
int tmp1 = min(D-B*2,C);
int tmp2 = min(C-A*2,D);
// printf("%d %d %d %d\n",A,B,C,D);
return max(tmp1+B+min((C-tmp1)/2,A), tmp2+A+min((D-tmp2)/2,B));
}
int main(){
int x,y;
for(scanf("%d%d",&x,&m); x--;){
scanf("%d",&y);
e[y] ++;
}
int res = chk(0);
if(m % 2 == 0)res += chk(m/2);
for(int i=1; i+i<m; i++)
res += chk2(i);
printf("%d\n",res);
return 0;
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:30:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for(scanf("%d%d",&x,&m); x--;){
^
./Main.cpp:31:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&y);
^