제출 #335311

#제출 시각아이디문제언어결과실행 시간메모리
335311crackersamdjamJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
12 ms2028 KiB
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define gc getchar()
#define pc(x) putchar(x)
template<typename T> void scan(T &x){x = 0;bool _=0;T c=gc;_=c==45;c=_?gc:c;while(c<48||c>57)c=gc;for(;c<48||c>57;c=gc);for(;c>47&&c<58;c=gc)x=(x<<3)+(x<<1)+(c&15);x=_?-x:x;}
template<typename T> void printn(T n){bool _=0;_=n<0;n=_?-n:n;char snum[65];int i=0;do{snum[i++]=char(n%10+48);n/= 10;}while(n);--i;if (_)pc(45);while(i>=0)pc(snum[i--]);}
template<typename First, typename ... Ints> void scan(First &arg, Ints&... rest){scan(arg);scan(rest...);}
template<typename T> void print(T n){printn(n);pc(10);}
template<typename First, typename ... Ints> void print(First arg, Ints... rest){printn(arg);pc(32);print(rest...);}

using namespace std;
const int MM = 2e5+5;

int n, k, ans = 1e9;
char s[MM];
vector<int> v[3];

int main(){
	scan(n, k);
	scanf("%s", s);
	for(int i = 0; i < n; i++){
		if(s[i] == 'J'){
			v[0].emplace_back(i);
		}
		else if(s[i] == 'O'){
			v[1].emplace_back(i);
		}
		else{
			v[2].emplace_back(i);
		}
	}
	for(int i = 0; i < size(v[0]); i++){
		if(i+k-1 >= size(v[0])) break;
		int a = v[0][i+k-1];
		int j = upper_bound(all(v[1]), a)-v[1].begin();
		if(j+k-1 >= size(v[1])) break;
		int b = v[1][j+k-1];
		int kk = upper_bound(all(v[2]), b)-v[2].begin();
		if(kk+k-1 >= size(v[2])) break;
		int c = v[2][kk+k-1];
		ans = min(ans, c-v[0][i]+1);
	}
	print(ans < 1e9 ? ans-3*k : -1);
}

컴파일 시 표준 에러 (stderr) 메시지

ho_t2.cpp: In function 'int main()':
ho_t2.cpp:32:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |  for(int i = 0; i < size(v[0]); i++){
      |                 ~~^~~~~~~~~~~~
ho_t2.cpp:33:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |   if(i+k-1 >= size(v[0])) break;
      |      ~~~~~~^~~~~~~~~~~~~
ho_t2.cpp:36:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |   if(j+k-1 >= size(v[1])) break;
      |      ~~~~~~^~~~~~~~~~~~~
ho_t2.cpp:39:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |   if(kk+k-1 >= size(v[2])) break;
      |      ~~~~~~~^~~~~~~~~~~~~
ho_t2.cpp:20:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   20 |  scanf("%s", s);
      |  ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...