A. Dividing Orange
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
One day Ms Swan bought an orange in a shop. The orange consisted of n·k segments, numbered with integers from 1 to n·k.
There were k children waiting for Ms Swan at home. The children have recently learned about the orange and they decided to divide it between them. For that each child took a piece of paper and wrote the number of the segment that he would like to get: the i-th (1 ≤ i ≤ k) child wrote the number ai (1 ≤ ai ≤ n·k). All numbers ai accidentally turned out to be different.
Now the children wonder, how to divide the orange so as to meet these conditions:
each child gets exactly n orange segments;
the i-th child gets the segment with number ai for sure;
no segment goes to two children simultaneously.
Help the children, divide the orange and fulfill the requirements, described above.
Input
The first line contains two integers n, k (1 ≤ n, k ≤ 30). The second line contains k space-separated integers a1, a2, …, ak (1 ≤ ai ≤ n·k), where ai is the number of the orange segment that the i-th child would like to get.
It is guaranteed that all numbers ai are distinct.
Output
Print exactly n·k distinct integers. The first n integers represent the indexes of the segments the first child will get, the second n integers represent the indexes of the segments the second child will get, and so on. Separate the printed numbers with whitespaces.
You can print a child’s segment indexes in any order. It is guaranteed that the answer always exists. If there are multiple correct answers, print any of them.
Examples
input
2 2
4 1
output
2 4
1 3
input
3 1
2
output
3 2
解题思路
本题目要求不是很高,给出 n ∗ k n*k n∗k个橘子,平均分给k个小孩儿,每个小孩儿想要 a i a_i ai编号的橘子,同时还需 n − 1 n-1 n−1个橘子那么显而易见代码就首先需要标记已经被预定的编号的橘子,并且从剩下的橘子中从头开始找到 n − 1 n-1 n−1个橘子给当前的小孩儿。
具体代码
// Problem: A. Dividing Orange
// Contest: Codeforces - Codeforces Round 150 (Div. 2)
// URL: https://codeforces.com/problemset/problem/244/A
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
const int N=11000;
int a[N],b[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,k,t=1;
cin>>n>>k;
int cnt=0;
for(int i=1;i<=k;i++){
cin>>a[i];
b[a[i]]=1;
cnt++;
}
for(int i=1;i<=k;i++){
cout<<a[i]<<' ';
for(int j=1;j<=n-1;){
if(b[t]==0){
cout<<t<<' ';
j++;
b[t]=1;
}
t++;
}
cout<<endl;
}
return 0;
}