#42802:


henry.rem.rem@gmail.com (*ฅ́˘ฅ̀*)

學校 : 臺北市立松山高級中學
編號 : 278368
來源 : [1.161.38.21]
最後登入時間 :
2024-11-08 20:44:57
d575. 末日審判 -- jack1 | From: [1.161.49.158] | 發表日期 : 2024-10-03 23:27

想請教下列程式哪裡有問題
後面大的測資都過
但前三個會少輸出 :0

#0: 20% WA (line:4)

您共輸出 3 行。

#1: 15% WA (line:2)

您共輸出 1 行。

#2: 15% WA (line:3)

您共輸出 2 行。
 
#include <stdio.h>
#include <cmath>
//#pragma GCC optimize("Ofast,unroll-loops,fast-math")
#define int long long
#define getchar getchar_unlocked  
#define putchar putchar_unlocked
using namespace std;
 
inline int read() {
    char ch = getchar();
    if (ch == EOF) return EOF;
    int s = 1;
    while (ch < '0' || '9' < ch) {
        if (ch == '-') {
            ch = getchar();
            s = -1;
            break;
        }
        ch = getchar();
    }
    int r = 0;
    while ('0' <= ch && ch <= '9') r = r * 10 + ch - '0', ch = getchar();
    return r * s;
}
 
void write(int x) {
    if (x < 0) putchar('-'), x *= -1;
    if (x > 9) write(x / 10);
    putchar(x % 10 + '0');
}
 
signed main() {
int y1, x1, y2, x2, r;
    y1 = read();
    while (y1 != EOF) {
        x1 = read(), y2 = read(), x2 = read(), r = read();
        if (abs(y1 - y2) + abs(x1 - x2) <= r) printf("die\n");
        else printf("alive\n");
        y1 = read();
    }
    return 0;
}
 
#42808: Re: 玄學(


henry.rem.rem@gmail.com (*ฅ́˘ฅ̀*)

學校 : 臺北市立松山高級中學
編號 : 278368
來源 : [1.161.38.21]
最後登入時間 :
2024-11-08 20:44:57
d575. 末日審判 -- jack1 | From: [1.161.49.158] | 發表日期 : 2024-10-04 20:11

想請教下列程式哪裡有問題
後面大的測資都過
但前三個會少輸出 :0

#0: 20% WA (line:4)

您共輸出 3 行。

#1: 15% WA (line:2)

您共輸出 1 行。

#2: 15% WA (line:3)

您共輸出 2 行。
 
#include
#include
//#pragma GCC optimize("Ofast,unroll-loops,fast-math")
#define int long long
#define getchar getchar_unlocked  
#define putchar putchar_unlocked
using namespace std;
 
inline int read() {
    char ch = getchar();
    if (ch == EOF) return EOF;
    int s = 1;
    while (ch < '0' || '9' < ch) {
        if (ch == '-') {
            ch = getchar();
            s = -1;
            break;
        }
        ch = getchar();
    }
    int r = 0;
    while ('0' <= ch && ch <= '9') r = r * 10 + ch - '0', ch = getchar();
    return r * s;
}
 
void write(int x) {
    if (x < 0) putchar('-'), x *= -1;
    if (x > 9) write(x / 10);
    putchar(x % 10 + '0');
}
 
signed main() {
int y1, x1, y2, x2, r;
    y1 = read();
    while (y1 != EOF) {
        x1 = read(), y2 = read(), x2 = read(), r = read();
        if (abs(y1 - y2) + abs(x1 - x2) <= r) printf("die\n");
        else printf("alive\n");
        y1 = read();
    }
    return 0;
}

已解決

原來EOF就是-1啊

所以會在第一個座標是-1時被打斷

又學到了新東西:D

 
ZeroJudge Forum