公式
B - Locked Rooms 解説
by
B - Locked Rooms 解説
by
cn449
すべての \(i\) について \(L_i = 0\) であるとき
\(2\) 人の人はいずれも部屋 \(0, 1, \ldots, N\) に到達できます。したがって、この場合の答えは \(0\) となります。
\(L_i = 1\) なる \(i\) が存在するとき
\(L_i = 1\) を満たす最小の \(i\) を \(X\)、最大の \(i\) を \(Y\) とおきます。はじめに部屋 \(0\) にいる人は部屋 \(0, 1, \ldots, X - 1\) に、部屋 \(N\) にいる人は部屋 \(Y, Y + 1, \ldots, N\) に到達できます。したがって、\(2\) 人のいずれも到達できない部屋は部屋 \(X, X + 1, \ldots, Y - 1\) の \(Y - X\) 個です。特に、\(X = Y\) のときは答えは \(0\) となります。
実装例
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> l(n);
for (int i = 0; i < n; i++) cin >> l[i];
int x = 0, y = 0;
for (int i = 0; i < n; i++) {
if (l[i] == 1) {
x = i;
break;
}
}
for (int i = n - 1; i >= 0; i--) {
if (l[i] == 1) {
y = i;
break;
}
}
cout << y - x << '\n';
}
投稿日時:
最終更新: