思路:
模拟。
实现:
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int INF = 1e9; 4 int a[100005], n; 5 string b; 6 int main() 7 { 8 while (cin >> n) 9 { 10 for (int i = 0; i < n; i++) cin >> a[i]; 11 cin >> b; 12 int l = -INF, r = INF; 13 for (int i = 4; i < n; i++) 14 { 15 if (b[i] != b[i - 1]) 16 { 17 if (b[i] == '0' && b[i - 1] == '1' && b[i - 2] == '1' && b[i - 3] == '1' && b[i - 4] == '1') 18 { 19 int tmp = INF; for (int j = i - 4; j <= i; j++) tmp = min(tmp, a[j]); 20 if (r >= tmp) r = tmp - 1; 21 } 22 else if (b[i] == '1' && b[i - 1] == '0' && b[i - 2] == '0' && b[i - 3] == '0' && b[i - 4] == '0') 23 { 24 int tmp = -INF; for (int j = i - 4; j <= i; j++) tmp = max(tmp, a[j]); 25 if (l <= tmp) l = tmp + 1; 26 } 27 } 28 } 29 cout << l << " " << r << endl; 30 } 31 return 0; 32 }