Submission #166453

# Submission time Handle Problem Language Result Execution time Memory
166453 2019-12-02T13:27:00 Z dolphingarlic Question (Grader is different from the original contest) (CEOI14_question_grader) C++14
100 / 100
1669 ms 119920 KB
int sets[925][12];
bool prec = false;

int encode(int n, int x, int y) {
    // Creates a unique set for each integer from 1 to 920 with 6 elements from 1 to 12
    if (!prec) {
        for (int i = 0, cnt = 1; i < (1<<12); i++) {
            if (__builtin_popcount(i) == 6) {
                for (int j = 0; j < 12; j++) if (i & (1<<j)) sets[cnt][j] = 1; else sets[cnt][j] = 0;
                cnt++;
            }
        }
        prec = true;
    }

    // Returns a number that is in sets[x] but not sets[y]
    for (int i = 0; i < 12; i++) if (sets[x][i] && !sets[y][i]) return i + 1;
}
int sets[925][12];
bool prec = false;

int decode(int n, int q, int h) {
	// Creates a unique set for each integer from 1 to 920 with 6 elements from 1 to 12
	if (!prec) {
		for (int i = 0, cnt = 1; i < (1<<12); i++) {
			if (__builtin_popcount(i) == 6) {
				for (int j = 0; j < 12; j++) if (i & (1<<j)) sets[cnt][j] = 1; else sets[cnt][j] = 0;
				cnt++;
			}
		}
		prec = true;
	}

	// If h is in the set of q, return yes
	return sets[q][h - 1];
}

Compilation message

encoder.cpp: In function 'int encode(int, int, int)':
encoder.cpp:18:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
# Verdict Execution time Memory Grader output
1 Correct 1626 ms 119536 KB Output is correct - maxh = 12
2 Correct 1669 ms 119920 KB Output is correct - maxh = 12