2016년 10월 2일 일요일

BOJ 1222 홍준 프로그래밍 대회

대회 참여 의사가 있는 학교의 수와 각 학교의 학생 수가 주어지는데, 대회 주최측에서 팀원 수를 정해주면 반드시 그 팀원 수대로 팀을 만들어야 하고 한 학교의 학생이 전원 참여할 수 있을 때만 그 학교가 참가할 수 있다. 즉 학생 수가 주최측에서 정한 팀원 수로 나누어 떨어져야 한다. 그리고 그렇게 참가한 학교의 팀 중 1위 팀만 본선에 진출할 수 있다. 즉 본선은 참가한 학교당 팀원 수(한 팀)만큼만 진출할 수 있다. 그리고 본선에는 적어도 2팀은 진출하게 해야한다는 조건이 있으므로 적어도 2개의 학교의 학생수가 팀원의 수로 나누어 떨어져야 한다.
이 때, 팀원 수를 잘 설정해서 본선에 참가할 수 있는 사람의 수의 최대값을 구하는 문제이다.

결국 본선에 진출할 수 있는 사람의 수는
(1.학생 수가 팀원 수로 나누어 떨어지는 학교의 수)*(2.팀원 수) 가 될 것인데, 1.학교의 수는 2개 이상이 되야 한다. 그럼 1부터 2000000까지의 팀원수를 다 넣어보면서 위의 조건을 만족하는 경우의 값을 구해서 그 중 최대를 구하면 될 것이다. 하지만 학교의 수는 200000...
시간이 너무 오래걸린다.


댓글 없음:

댓글 쓰기