Submission #923924

#TimeUsernameProblemLanguageResultExecution timeMemory
923924yeediotJJOOII 2 (JOI20_ho_t2)C++14
100 / 100
12 ms3376 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define sz(x) (int)(x.size()) #define all(x) x.begin(),x.end() #define F first #define S second #define pb push_back #ifdef local void setio(){freopen("/Users/iantsai/Library/Mobile Documents/com~apple~CloudDocs/cpp/Empty.md","r",stdin);} #define debug(x...) cerr << "[" << #x << "] = ["; _print(x) #else void setio(){} #define debug(x...) #endif signed main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); setio(); int n,k; cin>>n>>k; string s; cin>>s; s=' '+s; vector<vector<int>>pos(3); for(int i=1;i<=n;i++){ if(s[i]=='J')pos[0].pb(200000-i); else if(s[i]=='O')pos[1].pb(i); else if(s[i]=='I')pos[2].pb(i); } reverse(all(pos[0])); int ans=8e18; //for(auto i:pos[0])cout<<i<<' '; //cout<<'\n'; for(int i=0;i+k<=sz(pos[1]);i++){ int l=pos[1][i]; int r=pos[1][i+k-1]; int temp=r-l+1-k; l=200000-l; //cout<<temp<<' '; int x=lower_bound(all(pos[0]),l)-pos[0].begin(); if(x+k>sz(pos[0]))continue; int y=lower_bound(all(pos[2]),r)-pos[2].begin(); if(y+k>sz(pos[2]))continue; //cout<<pos[0][x+k-1]<<' '<<l<<' '; temp+=pos[0][x+k-1]-l-k+pos[2][y+k-1]-r-k; ans=min(ans,temp); } if(ans==8e18){ cout<<-1<<'\n'; } else{ cout<<ans<<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...