Submission #261314

#TimeUsernameProblemLanguageResultExecution timeMemory
261314Valera_GrinenkoJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
8 ms2052 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimization ("unroll-loops") #include <iostream> #include <fstream> #include <algorithm> #include <vector> #include <set> #include <stack> #include <map> #include <iomanip> #include <cmath> #include <queue> #include <bitset> #include <numeric> #include <array> #include <cstring> #include <random> #include <chrono> #define fi first #define se second #define pb push_back #define mp make_pair #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define make_unique(x) sort(all((x))); (x).resize(unique(all((x))) - (x).begin()) typedef long long ll; typedef long double ld; using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n = 0, k = 0; string s; cin >> n >> k >> s; int ans = -1; vector<int> pos[3]; for(int i = 0; i < n; i++) { if(s[i] == 'J') pos[0].pb(i); else if(s[i] == 'O') pos[1].pb(i); else pos[2].pb(i); } int jp = 0, op = 0, ip = 0; for(; jp < pos[0].size(); jp++) { if(jp + k - 1 >= pos[0].size()) break; while(op < pos[1].size() && pos[1][op] < pos[0][jp + k - 1]) op++; if(op == pos[1].size() || op > pos[0][jp + k - 1]) break; if(op + k - 1 >= pos[1].size()) break; while(ip < pos[2].size() && pos[2][ip] < pos[1][op + k - 1]) ip++; if(ip + k - 1 >= pos[2].size()) break; ans = (ans == -1 ? pos[2][ip + k - 1] - pos[0][jp] + 1 - 3 * k : min(ans, pos[2][ip + k - 1] - pos[0][jp] + 1 - 3 * k)); } cout << ans; return 0; } /* */

Compilation message (stderr)

ho_t2.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization ("unroll-loops")
 
ho_t2.cpp: In function 'int main()':
ho_t2.cpp:53:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(; jp < pos[0].size(); jp++) {
         ~~~^~~~~~~~~~~~~~~
ho_t2.cpp:54:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(jp + k - 1 >= pos[0].size()) break;
        ~~~~~~~~~~~^~~~~~~~~~~~~~~~
ho_t2.cpp:55:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(op < pos[1].size() && pos[1][op] < pos[0][jp + k - 1]) op++;
           ~~~^~~~~~~~~~~~~~~
ho_t2.cpp:56:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(op == pos[1].size() || op > pos[0][jp + k - 1]) break;
        ~~~^~~~~~~~~~~~~~~~
ho_t2.cpp:57:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(op + k - 1 >= pos[1].size()) break;
        ~~~~~~~~~~~^~~~~~~~~~~~~~~~
ho_t2.cpp:58:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(ip < pos[2].size() && pos[2][ip] < pos[1][op + k - 1]) ip++;
           ~~~^~~~~~~~~~~~~~~
ho_t2.cpp:59:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(ip + k - 1 >= pos[2].size()) break;
        ~~~~~~~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...