Quiz
https://yukicoder.me/problems/no/123
Submit
https://yukicoder.me/submissions/336529
解法1
解法2
- 操作を逆順にたどる
- この解法で解いた
- 解法1より速い
- 星1.5よりは難しい
Code
int main(){
cin >> N >> M;
A.resize(M);
FOR(i, 0, M){
cin >> A[i];
}
ll index = 1;
for(int i=M-1; i>=0; i--){
ll a = A[i];
if(index==1){
index = a;
}
else{
if(a<index){
}
else if(a>=index){
index--;
}
}
}
p(index);
return 0;
}
サンプル4
1 2 3 4 5 6 7 8 9 10
6番目を動かした結果
6 1 2 3 4 5 7 8 9 10
10番目を動かした結果
10 6 1 2 3 4 5 7 8 9
4番目を動かした結果
2 10 6 1 3 4 5 7 8 9
2番目を動かした結果
10 2 6 1 3 4 5 7 8 9
7番目を動かした結果
5 10 2 6 1 3 4 7 8 9
1番目を動かした結果
5 10 2 6 1 3 4 7 8 9
4番目を動かした結果
6 5 10 2 1 3 4 7 8 9
3番目を動かした結果
10 6 5 2 1 3 4 7 8 9
その他
- サンプル4をノートに手書きで順方向にシミュレーションしたらミスして答えが合わなかったので、サンプルのシミュレーションもPCにやらせた(コードでいうsimulation()の部分)