拿了 AC (8ms, 380KB) 不是最佳解,在處理 getchar() 的部份自己電腦和 zoj 的結果不同,嘗試了幾次才弄好。
說是 C++ 其實也幾乎都是 C code
cin 讀給 string 也是爆了,還沒想到怎麼處理,就換成 getchar() 土法煉鋼#include <cstdio>
#include <cstring>
const unsigned MAXSIZE = 100001;
char strs[3][MAXSIZE];
void input(int index) {
char ch;
int len;
for (len = 0; true; ++len) {
ch = getchar();
if (ch < '0' || '9' < ch) {
if (len == 0) {
len = -1;
continue;
} else {
strs[index][len] = '\0';
break;
}
}
strs[index][len] = ch;
}
}
bool lessThan(char * str1, char * str2) {
unsigned len1 = strlen(str1), len2 = strlen(str2);
if (len1 == len2) {
return strcmp(str1, str2) < 0;
} else {
return len1 < len2;
}
}
int main() {
int test;
while (scanf("%d\n", &test) != EOF) {
while (test--) {
input(0);
input(1);
input(2);
if (lessThan(strs[0], strs[1])) {
if (lessThan(strs[2], strs[1])) puts(strs[1]);
else puts(strs[2]);
} else {
if (lessThan(strs[2], strs[0])) puts(strs[0]);
else puts(strs[2]);
}
}
}
return 0;
}
補充:改成
char str[MAXSIZE];
scanf("%s", str);
就可以讀入長字串了,也就是我的 input() 根本用不到 (眼神死)