# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
471725 | rainboy | Izbori (COCI17_izbori) | C11 | 18 ms | 2340 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |