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;
}
|