---
# System prepended metadata

title: 0-6 進階輸入輸出
tags: [演算法, C++, APCS, Python]

---

# 0-6 進階輸入輸出

講義不是我寫的，網址在此 https://emanlaicepsa.github.io/2020/10/21/0-index/
我只是將自己寫的練習題程式碼記錄下來。
最後更新日期：2024年10月5日

## [TOJ: 5 / Hello World!](https://toj.tfcis.org/oj/pro/5/)

### Python 程式碼

執行時間最久約為 46 ms，使用記憶體最多約為 4120 kB，通過測試。
```python=
name = input()
print(f"Hello ,{name:s} !")
```

### C++ 程式碼

執行時間最久約為 2 ms，使用記憶體最多約為 312 kB，通過測試。
```cpp=
#include <iostream>
#include <string>
using namespace std;

int main() {
    string name;
    getline(cin, name);
    cout << "Hello ," << name << " !\n";
    return 0;
}
```

## [TOJ: 355 / [05校內初選]B.裝弱](https://toj.tfcis.org/oj/pro/355/)

### Python 程式碼

第2筆測資記憶體爆掉。
```python=
N, K = map(int, input().split())
data = sorted(list(map(int, input().split())), reverse=True)
print(data[1])
```

改用自訂函式寫出類似 C++ stringstream 的工具，這次變成第二筆測資超時。
```python=
def stringStream(s, sep):
    start = 0
    for end in range(len(s)):
        if s[end] in sep:
            yield s[start:end]
            start = end + 1
    if start < len(s):
        yield s[start:]

N, K = map(int, input().split())
stream = stringStream(input(), " \n")
data = sorted([int(s) for s in stream], reverse=True)
print(data[1])
```

再改成以下的寫法，還是超時。
```python=
def stringStream(s, sep):
    start = 0
    for end in range(len(s)):
        if s[end] in sep:
            yield s[start:end]
            start = end + 1
    if start < len(s):
        yield s[start:]

N, K = map(int, input().split())
stream = stringStream(input(), " \n")
high, ans = 0, 0
for s in stream:
    n = int(s)
    if n > high:
        ans = high
        high = n
    elif n > ans:
        ans = n
print(ans)
```

### C++ 程式碼

執行時間最久約為 559 ms，使用記憶體最多約為 388 kB，通過測試。
```cpp=
#include<iostream>
using namespace std;

int main() {
    ios::sync_with_stdio(0),cin.tie(0);
    int N, K; cin >> N >> K;
    int high = 0, ans = 0;
    for(int i=0, n; i<N; i++) {
        cin >> n;
        if (n > high) {
            ans = high;
            high = n;
        } else if (n > ans) {
            ans = n;
        }
    }
    cout << ans << "\n";
    return 0;
}
```

------

###### tags:`演算法`、`APCS`、`Python`、`C++`