# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
478264 | rainboy | Sajam (COCI18_sajam) | C11 | 132 ms | 6492 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#define N 1000
#define K 50
#define L 20
int min(int a, int b) { return a < b ? a : b; }
int cnt[1 << L];
void init() {
int b;
for (b = 1; b < 1 << L; b++)
cnt[b] = cnt[b & b - 1] + 1;
}
int dist(int *aa, int *bb) {
int h, d;
d = 0;
for (h = 0; h < K; h++)
d += cnt[aa[h] ^ bb[h]];
return d;
}
int main() {
static char cc[N][N + 1];
static int aa[N][K];
int n, k_, i, i_, j;
init();
scanf("%d%d", &n, &k_);
for (i = 0; i < n; i++) {
scanf("%s", cc[i]);
for (j = 0; j < n; j++)
if (cc[i][j] == 'o')
aa[i][j / L] |= 1 << j % L;
}
for (i = 0; i < n; i++) {
int k;
k = 0;
for (i_ = 0; i_ < n; i_++) {
int d = dist(aa[i], aa[i_]);
k += min(d, n - d);
}
if (k <= k_) {
printf("DA\n");
return 0;
}
}
for (j = 0; j < n; j++) {
int k;
aa[0][j / L] ^= 1 << j % L;
k = 0;
for (i = 0; i < n; i++) {
int d = dist(aa[0], aa[i]);
k += min(d, n - d);
}
aa[0][j / L] ^= 1 << j % L;
}
printf("NE\n");
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |