제출 #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...