CCF - 201612 - 1 - 중간 수

1656 단어 알고리즘
중간 수
문제 설명
  하나의 정수 서열 a1, a2,...................................................................................한 서열 에 여러 개의 아래 표 시 된 서로 다른 중간 수가 존재 할 수 있 으 며, 이 중간 수의 값 은 같다.  정수 서열 을 정 합 니 다. 이 정수 서열 의 중간 값 을 찾 아 보 세 요.
입력 형식
  입력 한 첫 줄 은 정수 n 을 포함 하고 정수 서열 의 개 수 를 나타 낸다.  두 번 째 줄 은 n 개의 정 수 를 포함 하고 a1, a2,..., an 을 차례대로 나타 낸다.
출력 형식
  약 정 된 시퀀스 의 중간 수가 존재 하면 중간 수의 값 을 출력 합 니 다. 그렇지 않 으 면 출력 - 1 은 중간 수가 존재 하지 않 음 을 표시 합 니 다.
샘플 입력
  6   2 6 5 6 3 5
샘플 출력
  5
예시 설명
  5 보다 작은 수도 2 개, 5 보다 큰 수도 2 개 였 다.
샘플 입력
  4   3 4 6 7
샘플 출력
 -1
예시 설명
  서열 에 있 는 네 개의 수 는 모두 중간 수의 정 의 를 만족 시 키 지 못 한다.
샘플 입력
  5
  3 4 6 6 7
샘플 출력
  -1
예시 설명
  서열 중의 다섯 개 수 는 모두 중간 수의 정 의 를 만족 시 키 지 못 한다.
평가 용례 규모 와 약정
  모든 평가 용례 에 대하 여 1 ≤ n ≤ 1000, 1 ≤ ai ≤ 1000. 
문제 풀이 의 사고 방향.
  개인 적 으로 vector 벡터 용 기 는 배열 보다 훨씬 유연 하고 사용 하기에 도 편리 하 다 고 생각 하기 때문에 평소에 배열 을 사용 할 때 저 는 vector 로 배열 을 대체 하 는 것 을 선택 합 니 다.먼저 한 열 수 를 입력 한 후에 정렬 하여 중간 수 를 찾 아 라.중간 수 좌우 양쪽 의 개 수 를 계산 하 는 것 은 중간 수 를 없 애 는 것 과 같다.좌우 양쪽 이 같 으 면 중간 수 를 출력 합 니 다. 그렇지 않 으 면 출력 - 1.
코드 는 다음 과 같다.
#include 
#include 
#include 
using namespace std;
int main()
{
	int n,m,middle,i;
	cin>>n;
       vector  v(n); //       n     
	for(i=0;i>v[i];
	sort(v.begin(),v.end()); //         
	m=n/2;  
	middle=v[m];   //         
	int left=0,right=0;
	for(i=0;imiddle)
		right++;
	}
	if(left==right) cout<

좋은 웹페이지 즐겨찾기