CodeForces 370C. Mittens
2013-12-11 11:58
190 查看
C. Mittens
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
A Christmas party in city S. had n children. All children came in mittens. The mittens can be of different colors, but each child had the left and the right mitten of the same color. Let's say that the colors of the mittens are numbered with integers from 1 to m, and the children are numbered from 1 to n. Then the i-th child has both mittens of color ci.
The Party had Santa Claus ('Father Frost' in Russian), his granddaughter Snow Girl, the children danced around the richly decorated Christmas tree. In fact, everything was so bright and diverse that the children wanted to wear mittens of distinct colors. The children decided to swap the mittens so that each of them got one left and one right mitten in the end, and these two mittens were of distinct colors. All mittens are of the same size and fit all the children.
The children started exchanging the mittens haphazardly, but they couldn't reach the situation when each child has a pair of mittens of distinct colors. Vasily Petrov, the dad of one of the children, noted that in the general case the children's idea may turn out impossible. Besides, he is a mathematician and he came up with such scheme of distributing mittens that the number of children that have distinct-colored mittens was maximum. You task is to repeat his discovery. Note that the left and right mittens are different: each child must end up with one left and one right mitten.
Input
The first line contains two integers n and m — the number of the children and the number of possible mitten colors (1 ≤ n ≤ 5000, 1 ≤ m ≤ 100). The second line contains n integers c1, c2, ... cn, where ci is the color of the mittens of the i-th child (1 ≤ ci ≤ m).
Output
In the first line, print the maximum number of children who can end up with a distinct-colored pair of mittens. In the next n lines print the way the mittens can be distributed in this case. On the i-th of these lines print two space-separated integers: the color of the left and the color of the right mitten the i-th child will get. If there are multiple solutions, you can print any of them.
Sample test(s)
input
output
input
output
若哪个颜色的手套大于n/2肯定不能换成每个人都不同。。。。若所有颜色的手套都小于n/2则每个人留着一个手套在和与自己相聚n/2的人换一个手套即可。。。。
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
A Christmas party in city S. had n children. All children came in mittens. The mittens can be of different colors, but each child had the left and the right mitten of the same color. Let's say that the colors of the mittens are numbered with integers from 1 to m, and the children are numbered from 1 to n. Then the i-th child has both mittens of color ci.
The Party had Santa Claus ('Father Frost' in Russian), his granddaughter Snow Girl, the children danced around the richly decorated Christmas tree. In fact, everything was so bright and diverse that the children wanted to wear mittens of distinct colors. The children decided to swap the mittens so that each of them got one left and one right mitten in the end, and these two mittens were of distinct colors. All mittens are of the same size and fit all the children.
The children started exchanging the mittens haphazardly, but they couldn't reach the situation when each child has a pair of mittens of distinct colors. Vasily Petrov, the dad of one of the children, noted that in the general case the children's idea may turn out impossible. Besides, he is a mathematician and he came up with such scheme of distributing mittens that the number of children that have distinct-colored mittens was maximum. You task is to repeat his discovery. Note that the left and right mittens are different: each child must end up with one left and one right mitten.
Input
The first line contains two integers n and m — the number of the children and the number of possible mitten colors (1 ≤ n ≤ 5000, 1 ≤ m ≤ 100). The second line contains n integers c1, c2, ... cn, where ci is the color of the mittens of the i-th child (1 ≤ ci ≤ m).
Output
In the first line, print the maximum number of children who can end up with a distinct-colored pair of mittens. In the next n lines print the way the mittens can be distributed in this case. On the i-th of these lines print two space-separated integers: the color of the left and the color of the right mitten the i-th child will get. If there are multiple solutions, you can print any of them.
Sample test(s)
input
6 3 1 3 2 2 1 1
output
6 2 1 1 2 2 1 1 3 1 2 3 1
input
4 2 1 2 1 1
output
2 1 2 1 1 2 1 1 1
若哪个颜色的手套大于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; }
相关文章推荐
- 【codeforces 370C】Mittens
- CodeForces 370C
- Codeforces 217div.2 C. Mittens
- Codeforce 370C Mittens 巧妙数学题
- Codeforces Round #217 (Div. 2) / 370C Mittens (构造&贪心)
- CodeForces 368B Sereja and Suffixes
- Codeforces 523C Name Quest
- codeforces 688B B. Lovely Palindromes(水题)
- Codeforces 734F Anton and School
- codeforces 808D - Array Division
- codeforces 864B - Polycarp and Letters
- codeforces Div.2 B.Suffix Structures
- CodeForces 128A Statues [基础DP]
- CodeForces 558A Lala Land and Apple Trees
- 【Codeforces 729 C Road to Cinema】 + 二分
- Codeforces 808G. Anthem of Berland
- 【Codeforces811E】Vladik and Entertaining Flags [线段树][并查集]
- codeforces 35E Parade 扫描线+线段树+离散化+STL
- Codeforces 588 C. Duff and Weight Lifting
- Codeforces-688A Opponents