ACM준비/SCPC

프로그래밍 경진대회

조규현15 2015. 10. 14. 16:30
반응형

내림차순 정렬은 쉽게 생각할 수 있다.

다만, 조심해야 하는 점이 정렬 후 Maximum값이 해당 배열의 최대값이 아니다.

동률의 점수를 가진 Player는 뒤에서 Maximum값이 나오므로

그 부분을 주의한다.

using namespace std;
bool comp(int a, int b) {
	return (a > b);
}
int main(int argc, char** argv) {
	int T;
	int test_case;
	/* 아래 freopen 함수는 input.txt 를 read only 형식으로 연 후,
	앞으로 표준 입력(키보드) 대신 input.txt 파일로 부터 읽어오겠다는 의미의 코드입니다.
	만약 본인의 PC 에서 테스트 할 때는, 입력값을 input.txt에 저장한 후 freopen 함수를 사용하면,
	그 아래에서 cin 을 사용하여 표준 입력 대신 input.txt 파일로 부터 입력값을 읽어 올 수 있습니다.
	따라서 본인의 PC 에서 테스트 할 때에는 아래 주석을 지우고 이 함수를 사용하셔도 됩니다.
	단, 이 시스템에서 "제출하기" 할 때에는 반드시 freopen 함수를 지우거나 주석 처리 하셔야 합니다. */
	//freopen("input.txt", "r", stdin);

	scanf("%d", &T);	//Codeground 시스템에서는 C++ 에서도 scanf 사용을 권장합니다.
	for (test_case = 1; test_case <= T; ++test_case) {
		//	이 부분에서 알고리즘 프로그램을 작성하십시오.

		int N;
		int B = -1, BC = 0;
		int R = 0;
		scanf("%d", &N);

		vector D;
		for (int i = 0; i < N; i++){
			int t;
			scanf("%d", &t);
			D.push_back(t);
		}

		sort(D.begin(), D.end(), comp);

		for (int i = 0; i < N; i++)
		{
			if (B < D[i] + i + 1)
				B = D[i] + i + 1;
		}
		for (int i = 0; i < N; i++)
		if (D[i] + N >= B)
			++R;
		//	이 부분에서 정답을 출력하십시오. Codeground 시스템에서는 C++ 에서도 printf 사용을 권장합니다. 
		printf("Case #%d\n", test_case);
		printf("%d\n", R);
	}

	return 0;	//	정상종료 시 반드시 0을 리턴해야 합니다.
}
반응형

'ACM준비 > SCPC' 카테고리의 다른 글

좋은 수  (0) 2015.10.15
미궁 속의 방  (0) 2015.10.15
다트 게임  (0) 2015.10.15
시험 공부  (0) 2015.10.14
숫자 골라내기  (0) 2015.10.14