KLIS 질문드립니다.

  • 임정민
    임정민

    안녕하세요 교제를 차곡차곡 풀어보고 있는 중에
    KLIS 관련 문의드립니다.

    교제상에는
    if (cnt <= skip) {
    skip -= cnt;
    }

    로 조건이 이하로 되어있는데
    저부분을 미만으로 고쳐줘야 정답이 도출됩니다.

    같을때도 그만큼 스킵을 해야해서 이하가 되는게 맞는것 같은데
    이해가 되지 않아 문의드립니다.

    void reconstruct(int start, int skip, vector<int>& lis) {
        if (start != -1) lis.push_back(S[start]);
        vector<pair<int, int>> followers;
        for (int next = start + 1; next < n; ++next) {
            if ((start == -1 || S[start] < S[next]) && lis3(start) == lis3(next) + 1) {
                followers.push_back(make_pair(S[next], next));
            }
        }
        sort(followers.begin(), followers.end());
        for (int i = 0; i < followers.size(); ++i) {
            int idx = followers[i].second;
            int cnt = count(idx);
            if (cnt < skip) {
                skip -= cnt;
            }
            else {
                reconstruct(idx, skip, lis);
                break;
            }
        }
    }
    

    8년 전
1개의 댓글이 있습니다.
  • 웅2
    웅2

    skip은 k-1로 두셨는지 확인해보세요~


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.