2月15日就是鐘嵐珠的生日了,為了給鐘嵐珠一個驚喜,三船栞子決定蒐集一些數字做成一個數列送給鐘嵐珠當作她的生日禮物。
三船栞子的癖好讓她只會蒐集非正整數,而鐘嵐珠的幸運數字 7122 則讓她覺得一個數列美麗若且唯若其所有數字皆大於等於 7122 或小於 -7122,因此你必須要幫三船栞子將她蒐集到的數字轉換成符合嵐珠喜好的數列。
假設三船栞子蒐集到的數字們是 $a_i$ ($1 \leq i \leq N$),那她希望給鐘嵐珠的數列 $B = (b_1, b_2, \ldots, b_N)$ 會由下列的步驟轉換。
1. 對於數字們 $a_i$,若其大於 $-7122$,則我們將 $a_i$ 改為 $-7122$
2. 若數字 $a_i$ 中有出現 $-7122$,則對於數字們 $a_i$ ($1 \leq i \leq N$),將其改成 $-a_i$
3. 將 $a_i$ 由小到大排序好,此數列即為最終轉換後得到的數列 $B$。
現在給你三船栞子蒐集到的數字們,你可以幫她處理完這些數字並告訴她最後的數列長相嗎?
以下為參考的解答,但其會獲得 WA,請在 edit distance 不多於 3 內將該程式碼修改正確:
#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n;
cin >> n;
vector<int> a(n);
bool flag = false;
for (int &ai : a) {
cin >> ai;
if (-7122 <= ai < 0) {
ai = -7122;
}
flag |= ai == -7122;
}
if (flag) {
for (int &ai : a)
ai *= -1;
// am i wrong? ...%> <%
sort(a.begin(), a.end());
}
for (int ai : a)
cout << ai << '\n';
return 0;
}
第一行的輸入有一個正整數 $N$, 代表三船栞子蒐集到的數字數量。
第二行有 $N$ 個非正整數 $a_i$,代表三船栞子蒐集到的數字。
輸出 $N$ 行,第 $i$ 行代表轉換後的數列的第 $i$ 項
IOICamp 2023 Day1 pE
No. | Testdata Range | Score |
---|---|---|
1 | 0~19 | 100 |