답안 #1111022

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1111022 2024-11-11T10:06:01 Z vjudge1 JJOOII 2 (JOI20_ho_t2) C++11
0 / 100
1 ms 336 KB
#include<bits/stdc++.h>
#define ll long long
#define pii pair<int, int>
#define pll pair<ll, ll>
#define plll pair<pll, pll>
#define pdd pair<double, double>
#define pu push_back
#define po pop_back
#define fi first
#define se second
#define fifi fi.fi
#define fise fi.se
#define sefi se.fi
#define sese se.se
#define cekcek cout<<'c'<<'e'<<'k'<<endl
using namespace std;

ll N, K, ans, sum, temp, L, R, mid, pos;
char a;
vector<ll> v[3];

int main(){
ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
cin >> N >> K;
for(ll i = 1; i <= N; i++){
    cin >> a;
    if(a == 'J') v[0].pu(i);
    else if(a == 'O') v[1].pu(i);
    else v[2].pu(i);
}
//for(auto i : v[2]) cout << i << " ";
ans = 1e15;
for(ll i = K - 1; i < v[2].size(); i++){
    //cari I
    sum = v[2][i] - v[2][i - (K - 1)] - (K - 1);

    // cari O
    pos = -1;
    L = 0;
    R = v[1].size() - 1;
    ll cari = v[2][i - (K - 1)];
    while(L <= R){
        mid = (L + R) / 2;
        if(v[1][mid] < cari){
            L = mid + 1;
            pos = mid;
        }
        else R = mid - 1;
    }
    if(pos < K - 1) continue;
    sum += v[1][pos] - v[1][pos - (K - 1)] - (K - 1);

    // cari J
    L = 0;
    R = v[0].size() - 1;
    cari = v[1][pos - (K - 1)];
    pos = -1;
    while(L <= R){
        mid = (L + R) / 2;
        if(v[0][mid] < cari){
            L = mid + 1;
            pos = mid;
        }
        else R = mid - 1;
    }
    if(pos < K - 1) continue;
    sum += v[0][pos] - v[0][pos - (K - 1)] - (K - 1);
    ans = min(ans, sum);
}
if(ans > 1e9) cout << -1 << endl;
else cout << ans << endl;
}

Compilation message

ho_t2.cpp: In function 'int main()':
ho_t2.cpp:33:21: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 | for(ll i = K - 1; i < v[2].size(); i++){
      |                   ~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Incorrect 1 ms 336 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Incorrect 1 ms 336 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Incorrect 1 ms 336 KB Output isn't correct
3 Halted 0 ms 0 KB -