codechef YNOUTPUT : Forced Output

問題概要

T個のテストケースに対して答がY/Nという結果がT個ならんでいる。完全一致していたら正解でそれ以外は不正解となる。

解法

どれが答になっているか全探索する。全部合わなかったら全部NOと出力する。

acceptされたコード

#include
#include
using namespace std;

const int MAX_N = 100;

int N;
char input[MAX_N][MAX_N][10];
char output[MAX_N][10];

const char* YES = "YES";
const char* NO = "NO";

void init() {
scanf("%d ", &N);
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
scanf("%[^\n^\r]%*c", input[i][j]);
}
}
}

void solve() {
for (int k = 0; k < N; ++k) {
bool ok = true;
for (int i = 0; i < N; ++i) {
bool same = true;
for (int j = 0; j < N; ++j) {
same &= strcmp(input[k][j], input[i][j]) == 0;
}
strcpy(output[i], same ? YES : NO);
}
for (int i = 0; i < N; ++i) {
ok &= strcmp(output[i], input[k][i]) == 0;
}
if (ok) {
for (int i = 0; i < N; ++i) {
puts(output[i]);
}
return ;
}
}
for (int i = 0; i < N; ++i) {
puts("NO");
}
}

int main() {
init();
solve();

return 0;
}
|