結果
| 問題 |
No.138 化石のバージョン
|
| コンテスト | |
| ユーザー |
demu
|
| 提出日時 | 2015-06-01 00:27:20 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,741 bytes |
| コンパイル時間 | 146 ms |
| コンパイル使用メモリ | 24,448 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-06 13:05:23 |
| 合計ジャッジ時間 | 1,156 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 2 |
| other | AC * 18 WA * 15 |
コンパイルメッセージ
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]) {
| ~~~~~^~~~~~~
ソースコード
#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] = {"51.52.61","37.73.94"};
char part[2][3][4]= {0};
//scanf("%s %s",&version[0], &version[1]);
separate(version, part, length);
bigger(part, length);
return 0;
}
demu