limsd2002   4년 전

안녕하세요.

아래의 소스를 제출결과 런타임 류 발생하여 원인을 찾지 못하였습니다.

로컬 PC 수행시 이상없습니다.

확인바랍니다.

139   4년 전

1 <= N <= 100,000 이네요.

plzrun   4년 전

회원수 10만입니다. 1만으로 잘못입력하셨네요.


문제가 잘못된 경우는 사실 거의 없죠? ㅎ

limsd2002   4년 전

아래와 같이 수정해도 동일한 오류가 발생합니다.

#include <stdio.h>
#include <algorithm>
using namespace std;

int N;
struct P {
int no;
double age;
char name[101];
};
struct P arr[100005];

bool sort1(const struct P i, const struct P j){
if(i.age < j.age){
return -1;
} else if(i.age > j.age){
return 1;
} else {
return 0;
}
}

int main(){
scanf("%d",&N);
for(int i=1; i<N; i++) {
scanf("%d %s",&arr[i].age,&arr[i].name);
arr[i].no = i;
}
sort(arr,arr+N,sort1);
for(int i=1; i<N; i++) {
printf("%d %s\n",arr[i].age,arr[i].name);
}
return 0;
}

139   4년 전

sort1 함수의 type을 bool이 아니라 int로 선언해보시겠어요?

bool형은 0 혹은 1만 값을 가질 수 있어요.

혹 bool을 유지하고싶으시면 return i.age < j.age 로 바꾸시면 될거에요.

139   4년 전

그리고 아마 그냥 std::sort함수는 stable하지 않아서 stable_sort를 쓰셔야될거같아요.

plzrun   4년 전

본인 코드에 고쳐야 할 부분이 너무 많기 때문입니다.

아래와 같이 고치시면 됩니다.

댓글을 작성하려면 로그인해야 합니다.