제출 #384003

#제출 시각아이디문제언어결과실행 시간메모리
384003aryan12JJOOII 2 (JOI20_ho_t2)C++17
100 / 100
18 ms3312 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector<int> J, O, I; int Check(int start_idx, int k) { int start = start_idx; int l = 0, r = J.size(); int mid, pos = J.size(); while(l <= r) { mid = (l + r) / 2; if(J[mid] >= start_idx) { pos = mid; r = mid - 1; } else { l = mid + 1; } } if(pos + k - 1 >= J.size()) return -1; l = 0; r = O.size(); start_idx = J[pos + k - 1]; pos = O.size(); while(l <= r) { mid = (l + r) / 2; if(O[mid] >= start_idx) { pos = mid; r = mid - 1; } else { l = mid + 1; } } if(pos + k - 1 >= O.size()) return -1; l = 0; r = I.size(); start_idx = O[pos + k - 1]; pos = I.size(); while(l <= r) { mid = (l + r) / 2; if(I[mid] >= start_idx) { pos = mid; r = mid - 1; } else { l = mid + 1; } } if(pos + k - 1 >= I.size()) return -1; int ending = I[pos + k - 1]; return ending - start + 1 - 3 * k; } void Solve() { int n, k; cin >> n >> k; string s; cin >> s; for(int i = 0; i < s.size(); i++) { if(s[i] == 'J') { J.push_back(i); } else if(s[i] == 'O') { O.push_back(i); } else { I.push_back(i); } } int ans = INT_MAX; for(int i = 0; i < s.size(); i++) { if(s[i] == 'J') { int x = Check(i, k); if(x == -1) { break; } else { ans = min(ans, x); } } } cout << ((ans == INT_MAX) ? (-1LL) : (ans)) << "\n"; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); Solve(); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

ho_t2.cpp: In function 'long long int Check(long long int, long long int)':
ho_t2.cpp:21:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |  if(pos + k - 1 >= J.size())
      |     ~~~~~~~~~~~~^~~~~~~~~~~
ho_t2.cpp:37:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |  if(pos + k - 1 >= O.size())
      |     ~~~~~~~~~~~~^~~~~~~~~~~
ho_t2.cpp:53:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |  if(pos + k - 1 >= I.size())
      |     ~~~~~~~~~~~~^~~~~~~~~~~
ho_t2.cpp: In function 'void Solve()':
ho_t2.cpp:64:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |  for(int i = 0; i < s.size(); i++) {
      |                 ~~^~~~~~~~~~
ho_t2.cpp:76:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |  for(int i = 0; i < s.size(); i++) {
      |                 ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...