도대체.. 어디가 잘못 됐을까요.. ?... 멀쩡한 문제 제가 정답비율 다 낮추네요 ㅜㅜ

  • tyburn117
    tyburn117

    일단 문제는 JLIS 입니다..
    제가 여러 예제를 아무리 돌려봐도 잘못된 틀린것을 모르겠습니다..
    문제는 분명 이해했는데.. 도대체 어디서 예외가 발생하여 이렇게 된 걸까요?
    자꾸 오답으로 나오니깐 답답해서 미칠거 같습니다 ㅜㅜ ALGOSPOT 회원님들 도와주세요!! ㅜㅜ

    #include <iostream>
    #include <set>
    using namespace std;
    int n , m;
    int tmp;
    int numN[100],numM[100];
    bool flagN[100],flagM[100];
    set<int> input;
    int main()
    {
        int caseNum ;
        cin>>caseNum;
        int count;
        while(caseNum-- > 0)
        {
            count = (-214748364);
            for(int i = 0 ; i < 100 ; i++)
            {
                numN[i] = 2147483647;
                numM[i] = 2147483647;
                flagN[i] = false;
                flagM[i] = false;
            }
            flagN[0] = true;
            flagM[0] = true;
            cin>>n>>m;
            for(int i = 0 ; i < n ; i++)
                cin>>numN[i];
            for(int i = 0 ; i < m ; i++)
                cin>>numM[i];
    
            for(int i = 1 ; i < n ; i ++)
            {
                if(numN[i-1] > numN[i])
                    flagN[i] = true;
            }
            for(int i = 0 ; i < m ; i ++)
            {
                if(numM[i-1] > numM[i])
                    flagM[i] = true;
            }
    
            int  iterN = 0;
            while(iterN != n)
            {
                int i;
                for(i = iterN+1; flagN[i] != true && i < n; i++);
                int  iterM = 0;
                while(iterM != m)
                {
                    int k;
                    for(k = iterM+1; flagM[k] != true && k < m; k++);
    
                    for(int j = iterN ; j < i; j++)
                        input.insert(numN[j]);
                    for(int j = iterM ; j < k; j++)
                        input.insert(numM[iterM++]);
                    iterM = k;
    
                    //JLIS찾기
                    if(count < (int)input.size())
                    {
                        count = input.size();
                    }
    
                    input.clear();
                }
                iterN = i;
            }
            input.clear();
            cout<<count<<endl;
        }//caseNum만큼 진행됨
    
        return 0;
    }
    

    11년 전
1개의 댓글이 있습니다.
  • JongMan
    JongMan

    제가 자세히 코드를 보지는 않았지만, 알고리즘이 틀린 것 같은데요?

    1
    2 4
    10 7
    7 8 10 9

    이런 입력을 돌려 보면 정답은 4인데 답이 3이 나오는군요.


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