Pagini recente » Cod sursa (job #2966608) | Monitorul de evaluare | Cod sursa (job #2916311) | Cod sursa (job #2341976) | Cod sursa (job #230639)
Cod sursa(job #230639)
#include <cstdio>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <set>
#include <sstream>
#include <numeric>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <cassert>
#include <ctime>
#include <cstdlib>
// #include <classic_algorithms>
// #include <creativity>
using namespace std;
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define REPV(i, a, b) for (int i = (a); i <= (b); ++i)
#define REPIT(it, v) for(it = v.begin(); it != v.end(); ++it)
#define REPD(i, n) for (int i = (n) - 1; i >= 0; --i)
#define REPVD(i, b, a) for (int i = (b); i >= (a); --i)
#define SZ(a) ((int)a.size())
#define PB push_back
#define ALL(x) (x).begin(), (x).end()
#define MP make_pair
#define X first
#define Y second
#define CLR(t) memset((t), 0, sizeof(t))
#define CPY(dest, source) memcpy((dest), (source), sizeof(source))
#define MSET(t, v) memset((t), v, sizeof(t))
typedef long long LL;
typedef vector<int> VI;
typedef istringstream ISS;
typedef vector<string> VS;
typedef pair<int, int> PII;
template<class T> ostream& operator<<(ostream& os, const vector<T>& a) { int i = 0, n = a.size(); for(;i<n;++i) os<<a[i]<<','; os<<endl; return os; }
int main()
{
freopen("tablete.in", "rt", stdin);
freopen("tablete.out", "wt", stdout);
int N, K;
scanf("%d %d", &N, &K);
int n = 1, greater = N * K + 1;
bool need = false;
REP(i, N) {
if (need) {
need = false;
printf("%d ", n-1);
} else {
printf("%d ", n);
}
n++;
REPV(j, 2, K-1) printf("%d ", n++);
if (n & 1) {
printf("%d ", n+1);
need = true;
} else {
printf("%d ", n);
}
n++;
if (K+1 <= N) {
int start = K+1;
if (!i && !(greater & 1)) {
printf("%d ", greater++ - 1);
start++;
}
REPV(i, start, N) printf("%d ", greater++);
}
printf("\n");
}
return 0;
}