# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
471725 | rainboy | Izbori (COCI17_izbori) | C11 | 18 ms | 2340 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 15
int max(int a, int b) { return a > b ? a : b; }
int main() {
static int kk[1 << N][N], cnt[1 << N];
int n, m, i_, i, b, ans;
scanf("%d%d%d", &m, &n, &i_), i_--;
while (m--) {
static int pp[N];
for (i = 0; i < n; i++)
scanf("%d", &pp[i]), pp[i]--;
for (b = 1; b < 1 << n; b++)
for (i = 0; i < n; i++)
if ((b & 1 << pp[i]) != 0) {
kk[b][pp[i]]++;
break;
}
}
for (b = 1; b < 1 << n; b++)
cnt[b] = cnt[b & b - 1] + 1;
ans = 0;
for (b = 1; b < 1 << n; b++)
if ((b & 1 << i_) != 0) {
int win = 1;
for (i = 0; i < n; i++)
if (i != i_ && kk[b][i_] < kk[b][i] || kk[b][i_] == kk[b][i] && i_ > i) {
win = 0;
break;
}
if (win)
ans = max(ans, cnt[b]);
}
ans = n - ans;
i_ = -1;
for (i = 0; i < n; i++)
if (i_ == -1 || kk[(1 << n) - 1][i_] < kk[(1 << n) - 1][i])
i_ = i;
printf("%d\n", i_ + 1);
printf("%d\n", ans);
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |