若哪个颜色的手套大于n/2肯定不能换成每个人都不同。。。。若所有颜色的手套都小于n/2则每个人留着一个手套在和与自己相聚n/2的人换一个手套即可。。。。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,m,a[5500]; int main() { cin>>n>>m; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); int cnt=0; for(int i=0;i<n;i++) cnt+=(a[i]!=a[(i+(n/2))%n]); cout<<cnt<<endl; for(int i=0;i<n;i++) cout<<a[i]<<" "<<a[(i+(n/2))%n]<<endl; return 0; }