本題說白了,就是一道big模擬!!!
題意不再贅述,我們直接看思路。這裡作者借鑑了某差分思想:
-
末尾加空格,用於判斷最後一個條件;
-
若只有 \(\le\),對給出的數字和陣列第一個進行標記。標記的時候要+32769,因為陣列中不存在負數下標,以免越界;
-
若只有 \(\ge\),就標記給出的數字和陣列最後一個;
-
若都有,就標記本條件中給出的資料對應的下標;
-
若錯開(如,\(x \le 7 \ \&\& \ x \ge 4567\)),不標記;
-
若所有的輸入條件都出現了錯開(如,\(x \le 7 \&\& x \ge 4567\))的情況,就輸出
false
; -
從頭到尾掃一遍,若s一直不為0(除了最後一個),輸出
true
; -
剩下的和區間一樣,輸出要做特殊處理:
- 建一個bool,存的是true即為前面輸出過,反之亦然;
- 輸出過的話,就先輸出
||
再輸出資料;
程式碼就不貼了