Submission #1174239

#TimeUsernameProblemLanguageResultExecution timeMemory
1174239lmquanJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
8 ms1932 KiB
#define taskname "" #include <iostream> #include <vector> #include <algorithm> using namespace std; const int kInf = 2000000000; int main() { if (fopen(taskname".inp", "r")) { freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout); } ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, k; string s; cin >> n >> k >> s; s = "#" + s; vector<char> x = {'J', 'O', 'I'}; int p = 1; for (int i = 1; i <= n; i++) { if (s[i] == x[(p - 1) / k]) { p++; if (p == 3 * k + 1) { break; } } } if (p != 3 * k + 1) { cout << -1; return 0; } vector<int> j, o, i; for (int _ = 1; _ <= n; _++) { if (s[_] == 'J') { j.push_back(_); } else if (s[_] == 'O') { o.push_back(_); } else { i.push_back(_); } } int result = kInf; for (int m = 0; m + k - 1 < j.size(); m++) { int t = j[m + k - 1]; auto it = upper_bound(o.begin(), o.end(), t); if (it == o.end()) { continue; } int f = it - o.begin(); if (f + k - 1 >= o.size()) { continue; } it = upper_bound(i.begin(), i.end(), o[f + k - 1]); if (it == i.end()) { continue; } int s = it - i.begin(); if (s + k - 1 >= i.size()) { continue; } result = min(result, i[s + k - 1] - j[m] + 1 - 3 * k); } cout << result; return 0; }

Compilation message (stderr)

ho_t2.cpp: In function 'int main()':
ho_t2.cpp:10:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     freopen(taskname".inp", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
ho_t2.cpp:11:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     freopen(taskname".out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...