JLIS 답지인데.. 뭐가틀린지 리뷰해주실분 계신가요..

  • previc
    previc

    샘플은 다 맞고, 제출하면 바로 오답처리되는거 보니 제 생각엔 알고리즘 문제보다는 입출력쪽에 문제가 있는것같은데 못찾겠네요 ㅜ

    #include <stdio.h>
    __inline int max(int a, int b) {
        return a > b ? a : b;
    }
    int seq_A[101], seq_B[101];
    unsigned int n, m;
    int Cache[101][104];
    int jlis2(int A_start, int B_start) {
        int *ret = &Cache[A_start][B_start];
        int val = max(seq_A[A_start], seq_B[B_start]);
        if (*ret != -1) return *ret;
        *ret = 0;
        for (int i = A_start + 1; i <= n; i++)
        {
            if (val < seq_A[i] ) *ret = max(*ret, 1 + jlis2(i, B_start));
        }
        for (int i = B_start + 1; i <= m; i++)
        {
            if (val < seq_B[i]) *ret = max(*ret, 1 + jlis2(A_start, i));
        }
        return *ret;
    }
    
    int main() {
        unsigned int C;
        seq_A[0] = seq_B[0] = -1;
        scanf("%u", &C);
        while (C)
        {
            for (int *p = &Cache[0][0]; p <= &Cache[101][104]-8; p+=8)
            {
                *p = *(p + 1) = *(p + 2) = *(p + 3) = *(p + 4) = *(p + 5) = *(p + 6) = *(p + 7) = -1;
            }
            scanf("%u", &n);
            scanf("%u", &m);
            for (int i = 1; i <= n; i++)
            {
                scanf("%u", &seq_A[i]);
            }
            for (int i = 1; i <= m; i++)
            {
                scanf("%u", &seq_B[i]);
            }
            printf("%d \n", jlis2(0,0));
            C--;
        }
        return 0;
    }
    

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