Source Code
#include <bits/stdc++.h>

#define ll long long
#define ull unsigned ll
constexpr auto PI = 3.141592653589793238462643383279502884;

const ll  MM = 1e9 + 7, N = 2e5 + 10;
const ll MAX = 2e18;
using namespace std;

ll gcd(ll a, ll b) {
	if (a < b)swap(a, b);
	if (b == 0)return a;
	return gcd(b, a % b);
}
ll lcm(ll a, ll b) {
	return a * b / gcd(a, b);
}
ll numberOfDiviser(ll a) {
	if (a == 1)return 0;
	ll ans = 1;
	ll i;
	for (i = 2; i * i < a; i++) {
		if (a % i == 0)ans += 2;
	}
	if (i * i == a)ans++;
	return ans;
}

ll pow(ll a, ll b, ll m) {
	if (b == 0)return 1;
	if (b == 1)return a;
	ll x = pow(a, b / 2, m);
	x = (x * x) % m;
	if (b % 2)x = (x * a);
	return x % m;
}
ll inverse_mod(ll a, ll m) {
	return pow(a, m - 2, m);
}

int solve() {
	int l, p; cin >> l >> p;
	int n = (1 << (p - 1))-1;
	n *= (l);
	n+=l;
	int cnt = 0;
	for (int i = 0; i <= n; i++) {
		bool f = 1;
		for (int j = 0; j < p; j++) {
			cout << '-';
			if (i & (1 << j)) {
				f = 0;
				break;
			}
		}
		if (i%(1<<(p-1))==0)cout << cnt++;
		cout << '\n';
	}
	return 0;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	std::cout.tie(0);
	int t = 1;//cin >> t;
	int i = 1;
	while (t--) {
		//cout << "Case #" << i++ << ": ";
		solve();
	}
}
/*

*/
Copy
Ruler srdamaa7
GNU G++17
2 ms
1.0 MB
Accepted