Submission #922729

# Submission time Handle Problem Language Result Execution time Memory
922729 2024-02-06T04:42:41 Z vjudge1 JJOOII 2 (JOI20_ho_t2) C++17
100 / 100
10 ms 5668 KB
#include <bits/stdc++.h>

#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")

using namespace std;

#define ll long long
#define ld long double
#define pb push_back
#define pf push_front
#define pii pair<int,int>
#define all(v) v.begin(),v.end()
#define F first
#define S second
#define mem(a,i) memset(a,i,sizeof(a))
#define sz(s) (int)s.size()
#define int ll
#define y1 yy
#define ppb pop_back
#define gcd(a,b) __gcd(a,b)
#define in insert

const int dx[4]={-1,0,1,0};
const int dy[4]={0,-1,0,1};

const int inf=1e9;
const int N=1e6;
const int MAX=2e5+10;
const int mod=1e9+7;

int n,k;
string s;
int nxt[MAX][3];

void calc(int tp,char x){
  int r=n;
  int cnt=0;
  for(int i=n;i>=1;i--){
    cnt+=(s[i]==x);
    while(cnt-(s[r]==x)>=k){
      cnt-=(s[r]==x);
      r--;
    }
    if(cnt<k)nxt[i][tp]=inf;
    else nxt[i][tp]=r;
  }
}

void solve(){
  cin>>n>>k;
  cin>>s;
  s="#"+s;
  calc(0,'J');
  calc(1,'O');
  calc(2,'I');
  int ans=inf;
  // cout<<nxt[4][1]<<" "<<nxt[7][2]<<"\n";
  for(int i=1;i<=n;i++){
    int r=nxt[i][0]+1;
    if(r>n)continue;
    r=nxt[r][1]+1;
    if(r>n)continue;
    r=nxt[r][2];
    if(r>n)continue;
    ans=min(ans,r-i+1-3*k);
  }
  if(ans!=inf)cout<<ans<<"\n";
  else cout<<-1<<"\n";
}

main(){
  // freopen("prizes.in", "r", stdin);
  // freopen("prizes.out", "w", stdout);
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t=1;
  // cin>>t;
  while(t--){
    solve();
  }
}

Compilation message

ho_t2.cpp:72:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   72 | main(){
      | ^~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 460 KB Output is correct
13 Correct 0 ms 468 KB Output is correct
14 Correct 0 ms 600 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 460 KB Output is correct
13 Correct 0 ms 468 KB Output is correct
14 Correct 0 ms 600 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 1 ms 348 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 1 ms 348 KB Output is correct
22 Correct 1 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 1 ms 344 KB Output is correct
28 Correct 1 ms 344 KB Output is correct
29 Correct 1 ms 348 KB Output is correct
30 Correct 1 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 348 KB Output is correct
33 Correct 1 ms 348 KB Output is correct
34 Correct 1 ms 348 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 460 KB Output is correct
13 Correct 0 ms 468 KB Output is correct
14 Correct 0 ms 600 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 1 ms 348 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 1 ms 348 KB Output is correct
22 Correct 1 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 1 ms 344 KB Output is correct
28 Correct 1 ms 344 KB Output is correct
29 Correct 1 ms 348 KB Output is correct
30 Correct 1 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 348 KB Output is correct
33 Correct 1 ms 348 KB Output is correct
34 Correct 1 ms 348 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
36 Correct 8 ms 5168 KB Output is correct
37 Correct 7 ms 5668 KB Output is correct
38 Correct 7 ms 5668 KB Output is correct
39 Correct 9 ms 5412 KB Output is correct
40 Correct 7 ms 5664 KB Output is correct
41 Correct 7 ms 5668 KB Output is correct
42 Correct 10 ms 5668 KB Output is correct
43 Correct 4 ms 5040 KB Output is correct
44 Correct 5 ms 5196 KB Output is correct
45 Correct 7 ms 5668 KB Output is correct
46 Correct 6 ms 5668 KB Output is correct
47 Correct 6 ms 5532 KB Output is correct
48 Correct 6 ms 5668 KB Output is correct
49 Correct 5 ms 4964 KB Output is correct
50 Correct 7 ms 5464 KB Output is correct
51 Correct 6 ms 5668 KB Output is correct
52 Correct 4 ms 5420 KB Output is correct
53 Correct 4 ms 5668 KB Output is correct
54 Correct 4 ms 5668 KB Output is correct
55 Correct 4 ms 5640 KB Output is correct
56 Correct 4 ms 5668 KB Output is correct