結果
| 問題 |
No.138 化石のバージョン
|
| コンテスト | |
| ユーザー |
demu
|
| 提出日時 | 2015-06-01 00:11:58 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,736 bytes |
| コンパイル時間 | 244 ms |
| コンパイル使用メモリ | 24,448 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-06 13:05:21 |
| 合計ジャッジ時間 | 1,186 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 22 WA * 11 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:63:13: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘char (*)[12]’ [-Wformat=]
63 | scanf("%s %s",&version[0], &version[1]);
| ~^ ~~~~~~~~~~~
| | |
| char* char (*)[12]
main.cpp:63:16: warning: format ‘%s’ expects argument of type ‘char*’, but argument 3 has type ‘char (*)[12]’ [-Wformat=]
63 | scanf("%s %s",&version[0], &version[1]);
| ~^ ~~~~~~~~~~~
| | |
| char* char (*)[12]
main.cpp:63:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
63 | scanf("%s %s",&version[0], &version[1]);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
#include <string.h>
int divide(char* part) {
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++) sum[0] += (int) part[0][i][j];
for (int k =0; k < length[1][i]; k++) sum[1] += (int) part[1][i][k];
if (sum[0] > sum[1]) {
printf("YES\n");
return;
} else if (sum[0] < sum[1]) {
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