답안 #1083359

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1083359 2024-09-03T02:53:27 Z vjudge1 JJOOII 2 (JOI20_ho_t2) C++17
100 / 100
10 ms 3240 KB
#include <bits/stdc++.h>
//#ifndef ONLINE_JUDGE
//#include <debugging.h>
//#endif
#define ff first
#define ss second
#define pp push_back
#define all(x) (x).begin(),(x).end()
#define dbg(v)  cout << "Line(" << __LINE__ << ") -> " << #v << " = " << (v) << endl;
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair <int,int>;
using pll = pair <ll,ll>;
using pld = pair <ld,ld>;
const char el ='\n';
const char sp = ' ';
const int maxn = 2e5+5, mod = 1e9+7, N = 10;
const ll inf = 1e9L+3;
int n,k,cnt[3][maxn];
string s;

int id (char c)
{
    if(c=='J')  return 0;
    if(c=='O')  return 1;
    if(c=='I')  return 2;
}

void input()
{
    cin>>n>>k>>s;
    s = '*' + s;
    for(int i=1;i<=n;++i)   ++cnt[id(s[i])][i];
    for(int i=0;i<3;++i)
        for(int j=1;j<=n;++j)   cnt[i][j]+=cnt[i][j-1];
}

void solve()
{
    int ans = inf;
    for(int i=1;i<=n;++i)
    {
//        dbg(i);
        if(s[i]!='J')   continue;
        int l = i, r = n, mid;
        while(l<=r)
        {
            mid = (l+r)/2;
            if(cnt[0][mid] - cnt[0][i-1] >=k)   r=mid-1;
            else                                l=mid+1;
        }
//        cout<<l<<sp;
        if(cnt[0][l] - cnt[0][i-1]<k)   continue;
        r = n;
        int le = l;
        while(l<=r)
        {
            mid = (l+r)/2;
            if(cnt[1][mid] - cnt[1][le-1]>=k)   r=mid-1;
            else                                l=mid+1;
        }
//        cout<<l<<sp;
        if(cnt[1][l] - cnt[1][le-1]<k)  continue;
        r=n;
        le = l;
        while(l<=r)
        {
            mid = (l+r)/2;
            if(cnt[2][mid] - cnt[2][le-1]>=k)   r=mid-1;
            else                                l=mid+1;
        }
//        cout<<l<<sp;
        if(cnt[2][l] - cnt[2][le-1]<k)  continue;
//        cout<<"666"<<sp;
        ans = min(ans, l-i+1-3*k);
    }
    if(ans>=inf)    cout<<-1;
    else            cout<<ans;
}

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int test = 1;
//    cin>>test;
    while(test-->0)
    {
        input();
        solve();
    }
    return 0;
}

Compilation message

ho_t2.cpp: In function 'int id(char)':
ho_t2.cpp:28:1: warning: control reaches end of non-void function [-Wreturn-type]
   28 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 344 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 344 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 1 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 344 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 0 ms 348 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 344 KB Output is correct
33 Correct 1 ms 344 KB Output is correct
34 Correct 0 ms 344 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 344 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 1 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 344 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 0 ms 348 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 344 KB Output is correct
33 Correct 1 ms 344 KB Output is correct
34 Correct 0 ms 344 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
36 Correct 7 ms 3120 KB Output is correct
37 Correct 7 ms 3092 KB Output is correct
38 Correct 8 ms 3104 KB Output is correct
39 Correct 10 ms 3108 KB Output is correct
40 Correct 7 ms 3108 KB Output is correct
41 Correct 9 ms 3108 KB Output is correct
42 Correct 10 ms 3132 KB Output is correct
43 Correct 4 ms 2396 KB Output is correct
44 Correct 5 ms 2516 KB Output is correct
45 Correct 7 ms 3128 KB Output is correct
46 Correct 7 ms 3108 KB Output is correct
47 Correct 8 ms 3140 KB Output is correct
48 Correct 7 ms 3156 KB Output is correct
49 Correct 5 ms 2144 KB Output is correct
50 Correct 7 ms 3108 KB Output is correct
51 Correct 7 ms 3108 KB Output is correct
52 Correct 4 ms 3108 KB Output is correct
53 Correct 4 ms 3108 KB Output is correct
54 Correct 7 ms 3108 KB Output is correct
55 Correct 4 ms 3240 KB Output is correct
56 Correct 3 ms 3108 KB Output is correct