Submission #15503

#TimeUsernameProblemLanguageResultExecution timeMemory
15503indosm분배 (kriii3_Q)C++14
24 / 24
13 ms2356 KiB
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <limits.h> #include <algorithm> #define MAX 12871 using namespace std; int main() { int a, b, c, d, e, f; int com[16][MAX]; int rst[100000]; int k, n, cnt = 0, count = 0; double K, N; int left = 0, right, check = 0; scanf("%d %d", &n, &k); right = n; N = pow(2.0, (double)n); K = pow(2.0, (double)k); f = INT_MAX - N + 1; com[0][0] = 0; com[0][1] = -1; com[right][0] = N - 1; com[right][1] = -1; for (a = 0; a<(int)K; a++) { for (b = 0; b<N / (K * 2); b++) { if (com[left][check] == -1) { left++; right--; count = 0; for (c = 0; c< check; c++) { for (d = 1; d<=n; d++) { e = com[left - 1][c]; if (com[left - 1][c] == (e >> d) << d) { com[left][count] = e + (int)pow(2.0, (double)(d-1)); com[right][count] = (~com[left][count]) - f; com[right][count] <<= 1; com[right][count] >>= 1; count++; } } } com[left][count] = -1; com[right][count] = -1; check = 0; } rst[cnt] = com[left][check]; if (left == right) { check++; } rst[cnt + 1] = com[right][check]; cnt += 2; check++; } std::sort(rst, rst + cnt); printf("%d", rst[0]); for (c = 1; c<cnt; c++) { printf(" %d", rst[c]); } cnt = 0; printf("\n"); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...