結果
| 問題 |
No.138 化石のバージョン
|
| コンテスト | |
| ユーザー |
demu
|
| 提出日時 | 2015-06-01 00:28:49 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,713 bytes |
| コンパイル時間 | 120 ms |
| コンパイル使用メモリ | 24,960 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-06 13:05:25 |
| 合計ジャッジ時間 | 1,001 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 27 WA * 6 |
コンパイルメッセージ
main.cpp: In function ‘int divide(char*)’:
main.cpp:6:30: warning: ‘sizeof’ on array function parameter ‘part’ will return size of ‘char*’ [-Wsizeof-array-argument]
6 | for (int i=0; i < sizeof(part)-1; i++) {
| ~^~~~~
main.cpp:4:17: note: declared here
4 | int divide(char part[4]) {
| ~~~~~^~~~~~~
main.cpp: In function ‘int main()’:
main.cpp:61:13: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘char (*)[12]’ [-Wformat=]
61 | scanf("%s %s",&version[0], &version[1]);
| ~^ ~~~~~~~~~~~
| | |
| char* char (*)[12]
main.cpp:61:16: warning: format ‘%s’ expects argument of type ‘char*’, but argument 3 has type ‘char (*)[12]’ [-Wformat=]
61 | scanf("%s %s",&version[0], &version[1]);
| ~^ ~~~~~~~~~~~
| | |
| char* char (*)[12]
main.cpp:61:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
61 | scanf("%s %s",&version[0], &version[1]);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
#include <string.h>
int divide(char part[4]) {
int length = 0;
for (int i=0; i < sizeof(part)-1; i++) {
if (part[i] != '\0') length++;
}
return length;
}
void separate(char org[2][12], char part[2][3][4], int length[2][3]) {
for (int i = 0; i < 2; i++) {
char* tp = strtok(org[i], ".");
sprintf(part[i][0],"%s",tp);
int count = 0;
while (tp != NULL) {
tp = strtok(NULL, ".");
if (tp != NULL) {
if (count++ == 0) sprintf(part[i][1], "%s", tp);
else sprintf(part[i][2], "%s", tp);
}
}
for (int j=0; j<3; j++) length[i][j] = divide(part[i][j]);
}
}
void bigger(char part[2][3][4], int length[2][3]) {
for (int i=0; i < 3; i++) {
int sum[2] = {0,0};
if (length[0][i] > length[1][i]) {
printf("YES\n");
return;
} else if (length[0][i] == length[1][i]) {
for (int j =0; j < length[0][i]; j++) {
if ((int) part[0][i][j] > (int) part[1][i][j]) {
printf("YES\n");
return;
} else if ((int) part[0][i][j] < (int) part[1][i][j]) {
printf("NO\n");
return;
}
}
} else {
printf("NO\n");
return;
}
}
printf("YES\n"); // 全て等しいとき
}
int main() {
int sum[2] = {0,0};
int length[2][3] = {0};
char version[2][12];
char part[2][3][4]= {0};
scanf("%s %s",&version[0], &version[1]);
separate(version, part, length);
bigger(part, length);
return 0;
}
demu