# I/O 加速(ZJ常用)
在main內加上這幾行
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
```
接下來正常寫程式即可
# continue/break
```cpp=
for()
{
if()
continue;//跳過這次
if()
break;//結束迴圈
}
```
# 排序&反轉
## 陣列
```cpp=
int a[n];
sort(a,a+n);//排序
reverse(a,a+n);//反轉
```
## 字串及動態陣列(APCS >3)
```cpp=
string s;//字串
reverse(s.begin(),s.end());//string幾乎沒在用排序
vector<int> v;//動態陣列
sort(v.begin(),v.end());
reverse(v.begin(),v.end());
```
# 尋找最大最小值
## 第一種作法
```cpp=
int a[n];
int mins=INT_MAX,maxs=-1;
for(int i=0;i<n;i++)
{
if(mins>a[i])
mins=a[i];
if(maxs<a[i])
maxs=a[i];
}
```
## 第二種作法
```cpp=
int a[n];
int mins=INT_MAX,maxs=-1;
for(int i=0;i<n;i++)
{
mins=min(mins,a[i]);
maxs=max(maxs,a[i]);
}
```
## 第三種作法
```cpp=
int a[n];
sort(a,a+n);
cout<<a[0]<<endl;//min
cout<<a[n-1]<<endl;//max
```
# 巢狀迴圈(多個迴圈)
以[c295. 最大和](https://zerojudge.tw/ShowProblem?problemid=c295)為例
```cpp=
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
}
}
```
m表示有m行
n表示每行有n個元素
注意內外迴圈不可用相同變數,三個或以上以此類推
# 整行讀入
```cpp=
string s;
getline(cin,s);
```
這會整行讀入(連同空白),直到遇到換行
# 切字串
```cpp=
string s,ss;
ss=s.substr(0,3);
```
這時候的ss會是從s[0]切大小為3的字串