Submission #203843

#TimeUsernameProblemLanguageResultExecution timeMemory
203843EvirirJJOOII 2 (JOI20_ho_t2)C++17
0 / 100
5 ms380 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define watch(x) cout<<(#x)<<"="<<(x)<<'\n' #define mset(d,val) memset(d,val,sizeof(d)) #define setp(x) cout<<fixed<<setprecision(x) #define forn(i,a,b) for(int i=a;i<b;i++) #define fore(i,a,b) for(int i=a;i<=b;i++) #define pb push_back #define F first #define S second #define INF ll(1e18) #define MOD 998244353 #define pqueue priority_queue #define fbo find_by_order #define ook order_of_key typedef long long ll; typedef pair<ll,ll> ii; typedef vector<ll> vi; typedef vector<ii> vii; typedef long double ld; typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> pbds; #define MAXN 100005 int conv(char c){ if(c=='J') return 0; if(c=='O') return 1; return 2; } int n,k; string s; vi loc[3]; ll ans=INF; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>k; cin>>s; forn(i,0,n){ loc[conv(s[i])].pb(i); } for(auto p0=loc[0].begin();p0!=loc[0].end();p0++) { int d1=*p0; auto p1=p0+k-1; if(p1==loc[0].end()) break; auto p2=upper_bound(loc[1].begin(),loc[1].end(),*p1); if(p2==loc[1].end()) break; p2+=k-1; if(p2==loc[1].end()) break; auto p3=upper_bound(loc[2].begin(),loc[2].end(),*p2); if(p3==loc[2].end()) break; p3+=k-1; if(p3==loc[2].end()) break; ans=min(ans, *p3-d1+1-3*k); } if(ans==INF) cout<<-1<<'\n'; else cout<<ans<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...