hapy1010   5년 전

어디서 틀리는지 감이 안잡히네요...

첨부한 코드는 아래와 같이 작동합니다.

T 입력받음.

N,L,k를 입력받은 후,

  1. >>position>> id 입력받음.
  2. 개미의 id가 +이면 position을 rout에, -면 lout에 저장. 이 때 +의 총 수를 countr에 -의 총 수를 countl에 저장.
  3. left는 왼쪽으로 떨어진 수. right는 오른쪽으로 떨어진 수 임.
    1. countr>right && countl>left 이면  lout[left]와 L-rout[countr-1-right]를 비교해서 어느 쪽이 떨어지는지 결정 후 떨어트림. leftdrop또는 rightdrop함수를 호출함. 
    2. 만약 lout[left] =  L-rout[countr-1-right] 를 만족하면
      abs(id[left])>abs(id[countr-right-1])일 때는 rightdrop 작업 후 leftdrop . 부등호가 반대이면 leftdrop 후 rightdrop .

4. 만약 countl>left&&countr==right이면  leftdrop 만 작업. countl==left&&countr==left이면 rightdrop 만 작업.

5. leftdrop과 rightdrop은 nout(떨어진 총 수)가 k라 되면 떨어진 개미의 id출력하며, 호출시 nout을 1 증가시키며, left 또는 right도 1 증가시킴.

6. 루프는 while(nout<k)동안 돌아감.

hapy1010   5년 전

그냥 sort해서 풀었습니다.

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