题目链接:点击打开链接
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 105;
vector<int> s[N];
bool f[N*N];
int x[N*N], y[N*N];
int main() {
int n, k, m;
while(~scanf("%d%d%d", &n, &k, &m)) {
for(int i = 0; i < n; i ++) {
printf("%d\n", i % k + 1);
s[(i%k)+1].push_back(i+1);
}
int size = 0;
for(int i = 1; i <= n; i += 2) {
int a = i, b = i+1;
if(b > n) b -= 2;
x[size] = a;
y[size] = b;
size++;
f[a*100+b] = f[a+b*100] = 1;
}
for(int i = 1; size < m && i <= k; i ++) {
for(int j = 0; size < m && j < s[i].size(); j ++) {
for(int ii = i + 1; size < m && ii <= k; ii ++) {
for(int jj = 0; size < m && jj < s[ii].size(); jj ++) {
int a = s[i][j], b = s[ii][jj];
if(!f[a*100+b] && !f[a+b*100]) {
x[size] = a;
y[size] = b;
size ++;
f[a*100+b] = f[a+b*100] = 1;
}
}
}
}
}
for(int i = 0; i < size && i < m; i ++) {
printf("%d %d\n", x[i], y[i]);
}
for(int i = 0; i < N; i ++) {
s[i].clear();
}
memset(f, 0, sizeof f);
}
return 0;
}
/*
5 3 4
4 2 4
4 6 3
*/