Pagini recente » Cod sursa (job #2318091) | Cod sursa (job #1477896) | Cod sursa (job #1595228) | Cod sursa (job #2532439) | Cod sursa (job #1660960)
#include <cstdio>
long long N, K;
long long* teamSize;
long long teams;
int main(void) {
freopen("copii2.in", "r", stdin);
freopen("copii2.out", "w", stdout);
long long i, j, k;
// citirea datelor
scanf("%lld%lld", &N, &K);
// calcularea solutiei
long long n = N - 1;
long long digits = 0;
while(n > 0) {
n /= K;
digits++;
}
teamSize = new long long[K];
// afisarea solutiei
long long Kd = 1;
printf("%lld\n", digits);
for (long long digit = 0; digit < digits; digit++) {
for (i = 0; i < K; i++) {
teamSize[i] = 0;
}
for (i = 0; i < N; i++) {
teamSize[(i / Kd) % K]++;
}
teams = 0;
for (i = 0; i < K; i++) {
if (teamSize[i] > 0) {
teams++;
}
}
printf("%lld\n", teams);
for (i = 0; i < K; i++) {
if (teamSize[i] > 0) {
printf("%lld ", teamSize[i]);
for (j = 0; j < Kd; j++) {
for (k = Kd * i + j; k < N; k += Kd * K) {
printf("%lld ", k + 1);
}
}
printf("\n");
}
}
Kd *= K;
}
return 0;
}