JLIS문제, 거의 책을 보고 짠 소스인데 오답이 떠서 질문드립니다!

  • skan1543
    skan1543
    #include<stdio.h>
    #include <limits>
    using namespace std;
    int n,m;
    long long a[105],b[105];
    int cache[105][105]={0,};
    const long long NEGINF = numeric_limits<long long>::min();
    int count(int x,int y)
    {
        if(cache[x][y]!=0) return cache[x][y];
        int max=2;
        long long  bigger = a[x]>b[y] ? a[x]:b[y];
        for(int i=x+1;i<=n;i++)
        {
            if(a[i]>bigger)
            {
                int temp=count(i,y);
                if(temp+1>max) max=temp+1;
            }
        }
        for(int j=y+1;j<=m;j++)
        {
            if(b[j]>bigger)
            {
                int temp=count(x,j);
                if(temp+1>max) max=temp+1;
            }
        }
        cache[x][y]=max;
        return max;
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d %d",&n,&m);
            int i,j;
            a[0]=NEGINF;
            b[0]=NEGINF;
            for(i=1;i<=n;i++) scanf("%d",&a[i]);
            for(i=1;i<=m;i++) scanf("%d",&b[i]);
            int answer=0;
            answer=count(0,0);
            printf("%d\n",answer-2);
            for(i=0;i<=104;i++)
                for(j=0;j<=104;j++) cache[i][j]=0;
        }
        return 0;
    }
    

    JLIS
    전체적인 아이디어는 책을 참고하였고..

    메모이제이션에 쓸 배열초기화도 했구, 책과도 다른점이 거의 없는데 오답이 뜨네요.. 어디가 틀린걸까요?


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

    하... %lld로 a랑 b를 입력받아야 하는거였군요... 그런데 음, 어짜피 입력이 32비트로 표현가능한것들만 들어오는데, 왜 %d해주면 안되는걸까요?


    8년 전 link
  • Being
    Being

    https://en.wikipedia.org/wiki/Endianness


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