도대체.. 어디가 잘못 됐을까요.. ?... 멀쩡한 문제 제가 정답비율 다 낮추네요 ㅜㅜ 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; } 12년 전
1개의 댓글이 있습니다. JongMan 제가 자세히 코드를 보지는 않았지만, 알고리즘이 틀린 것 같은데요? 1 2 4 10 7 7 8 10 9 이런 입력을 돌려 보면 정답은 4인데 답이 3이 나오는군요. 12년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
tyburn117
일단 문제는 JLIS 입니다..
제가 여러 예제를 아무리 돌려봐도 잘못된 틀린것을 모르겠습니다..
문제는 분명 이해했는데.. 도대체 어디서 예외가 발생하여 이렇게 된 걸까요?
자꾸 오답으로 나오니깐 답답해서 미칠거 같습니다 ㅜㅜ ALGOSPOT 회원님들 도와주세요!! ㅜㅜ
12년 전