| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1222537 | lukasuliashvili | JJOOII 2 (JOI20_ho_t2) | C++20 | 0 ms | 320 KiB |
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,k;
string s;
cin>>n>>k>>s;
s='*'+s;
vector<int> vec1,vec2,vec3;
for(int i=1;i<=n;++i){
if(s[i]=='J')vec1.push_back(i);
else if(s[i]=='O')vec2.push_back(i);
else if(s[i]=='I')vec3.push_back(i);
}
if(vec1.size()<k||vec2.size()<k||vec3.size()<k){
cout<<-1<<endl;
return 0;
}
int min_cost=LLONG_MAX;
for(int i=0;i+k-1<vec1.size();++i){
int last_j=vec1[i+k-1];
auto o_it=lower_bound(vec2.begin(),vec2.end(),last_j+1);
if(o_it==vec2.end()||o_it+k-1==vec2.end())continue;
int last_o=*(o_it+k-1);
auto i_it=lower_bound(vec3.begin(),vec3.end(),last_o+1);
if(i_it==vec3.end()||i_it+k-1==vec3.end())continue;
int last_i=*(i_it+k-1);
int length=last_i-vec1[i]+1;
int cost=length-3*k;
min_cost=min(min_cost,cost);
}
if(min_cost==LLONG_MAX)cout<<-1<<endl;
else cout<<min_cost<<endl;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
