Submission #753938

#TimeUsernameProblemLanguageResultExecution timeMemory
753938vjudge1JJOOII 2 (JOI20_ho_t2)C++17
100 / 100
7 ms2760 KiB
#include <bits/stdc++.h> #define Kuanyshh ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0) ; //#define s second //#define f first #pragma GCC optimize( "Ofast", "O3" , "unroll-loops") #pragma GCC target ("sse,sse2") using namespace std; using ll = long long; const int inf = 1e18+77; const int mod = 1e9+7; const int mx = 1e5+79; int cntj[mx], cnto[mx], cnti[mx]; void shift(){ int n, k; string s; cin >> n >> k >> s; int res = inf, index, kj = 0, ko = 0, ki = 0, ko2=0, ki2=0; vector<int> o, ii, j; for(int i = 0; i < s.size(); i++){ if(s[i] == 'J'){ j.push_back(i); cntj[j.size()] = i; } if(s[i] == 'O'){ o.push_back(i); cnto[o.size()] = i; } if(s[i] == 'I'){ ii.push_back(i); cnti[ii.size()] = i; } } kj = j.size(); ko = o.size(); ki = ii.size(); for(int i = 1; i <= kj; i++){ if(i + k - 1 > kj){ break; }else{ index = cntj[i + k - 1]; } while(cnto[ko2] <= index){ ko2++; if(ko2 > ko) break; } if(ko2 + k - 1 > ko){ break; }else{ index = cnto[ko2 + k - 1]; } while(cnti[ki2] < index){ ki2++; if(ki2 > ki){ break; } } if(ki2 + k - 1 > ki){ break; }else{ index = cnti[ki2 + k - 1]; } int ans = index - cntj[i] + 1 - 3 * k; res = min(res, ans); } if(res == inf || res < 0) cout << -1; else cout << res; } signed main(){ Kuanyshh; int tt = 1; // // cin >> tt; while(tt--){ shift(); } }

Compilation message (stderr)

ho_t2.cpp:12:21: warning: overflow in conversion from 'double' to 'int' changes value from '1.0000000000000001e+18' to '2147483647' [-Woverflow]
   12 | const int inf = 1e18+77;
      |                 ~~~~^~~
ho_t2.cpp: In function 'void shift()':
ho_t2.cpp:24:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |  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...