되는대로 살자

[C언어 기출문제&풀이] When Can We Meet? 본문

2009~2014/C/C++

[C언어 기출문제&풀이] When Can We Meet?

malu 2010. 11. 14. 17:14

프로그램 명: when
제한시간: 1 초

ICPC 위원회는 다음 대회 회의를 위하여 가능한 빨리 미팅을 가지려고 한다. 그런데 , 멤버회원들이 너무 바빠 회의날짜를 잡는 것이 쉽지 않다.

위원회는 미팅 날짜를 잡기 위해서 회원들에게 만날수 있는 날을 이메일로 부쳐줄 것을 요구했다.

당신이 해야 할 일은 이메일 리스트를 보고 가능한 많은 사람이 참여할 수 있는 날짜를 구하는 것이다.

입력

입력의 첫 줄은 두 개의 수가 주어진다.

  • 첫 수 N (50 이하의 양의 정수)은 위원회원 수이고,
  • 다음 Q 는 의사 정족수이다 , Q 는 N 보다 같거나 작은 양의 정수이다.

다음 N 라인의 입력 형식은

  • 첫 수는 각 회원의 가능한 날 수 M ( 0 이상 양의 정수) 이 주어지고,
  • 다음 M ( 1 이상 100 이하의 양의 정수) 개의 가능한 일자가 주어진다.
    M Date1 Date2 ... DateM

가능한 날의 1 은 내일 , 2 는 내일의 내일 , 3 은 내일의내일의내일 , .... 을 의미한다.

날은 중복없이 오름차순으로 입력된다.

출력

가장 많은 인원이 참가할 수 있는 날을 출력한다.

단, 의사 정족수를 채울수 있는 날이 없다면 0 을 출력하고 , 답이 여러 개인 경우 빠른 날을 출력한다.

입출력 예

입력

3 2
2 1 4
0
3 3 4 8

출력

4

입력

3 2
4 1 5 8 9
3 2 5 9
5 2 4 5 7 9

출력

5

입력

3 3
2 1 4
3 2 5 9
2 2 4

출력

0

입력

3 3
2 1 2
3 1 2 9
2 2 4

출력

2

보충 설명

입력 데이터
3 2 
4 1 5 8 9 
3 2 5 9 
5 2 4 5 7 9 

1 2 3 4 5 6 7 8 9 
-----------------
*       *     * *
  *     *       *
  *   * *   *   *
5 , 9 중 빠른 날 5 가 답이다.
출처: Asia - Aizu (Japan) 2003 Preliminary
소스코드 
 #include <stdio.h>
int main()
{
 int n,q,m[100]={0,},max=0,loopcnt,date,i,j;
 scanf("%d %d",&n,&q);
 for(i=0;i<n;i++)
 {
  scanf("%d",&loopcnt);
  for(j=0;j<loopcnt;j++)
  {
   scanf("%d",&date);
   m[date]++;
   if(max<m[date])
    max=date;
  }
 }
 if(m[max]<q) printf("0");
 else printf("%d",max);
}