제출 #432373

#제출 시각아이디문제언어결과실행 시간메모리
432373tengiz05Miners (IOI07_miners)C++17
52 / 100
1401 ms1816 KiB
#include <bits/stdc++.h> std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count()); int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n; std::cin >> n; std::string s; std::cin >> s; std::vector<int> a(n); for (int i = 0; i < n; i++) { if (s[i] == 'M') a[i] = 0; if (s[i] == 'F') a[i] = 1; if (s[i] == 'B') a[i] = 2; } if (n <= 2) { int ans = 0; for (int msk = 0; msk < (1 << n); msk++) { int res = 0; std::vector<int> ca(3), cb(3); std::vector<int> A, B; for (int i = 0; i < n; i++) { if (msk & (1 << i)) { if (A.size() >= 3) { ca[A[A.size() - 3]]--; } A.push_back(a[i]); ca[a[i]]++; res += bool(ca[0]) + bool(ca[1]) + bool(ca[2]); } else { if (B.size() >= 3) { cb[B[B.size() - 3]]--; } B.push_back(a[i]); cb[a[i]]++; res += bool(cb[0]) + bool(cb[1]) + bool(cb[2]); } } ans = std::max(ans, res); } std::cout << ans << "\n"; } else { int ans = 0; std::bitset<100000> b; while (1.0 * std::clock() / CLOCKS_PER_SEC < 1.4) { for (int i = 0; i < n; i++) { b[i] = rng() & 1; } int res = 0; std::vector<int> ca(3), cb(3); std::vector<int> A, B; for (int i = 0; i < n; i++) { if (b[i]) { if (A.size() >= 3) { ca[A[A.size() - 3]]--; } A.push_back(a[i]); ca[a[i]]++; res += bool(ca[0]) + bool(ca[1]) + bool(ca[2]); } else { if (B.size() >= 3) { cb[B[B.size() - 3]]--; } B.push_back(a[i]); cb[a[i]]++; res += bool(cb[0]) + bool(cb[1]) + bool(cb[2]); } } ans = std::max(ans, res); } std::cout << ans << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...