<問題>
<入力>
<出力>
最も多く票を獲得した競技の番号を 1 行で出力せよ.また,出力の最後には,改行を入れる.
<入出力例>
入力例1 |
入力例2 |
4 3 |
6 6 |
出力例2 |
|
2 |
1 |
解答例 (制限時間は60分) #include <stdio.h> int main(void) { int N,M; int A[1000], Bj; int C[1000]; /* 獲得票数 */ int i, j; int maxi, maxp; scanf("%d %d", &N, &M); /* 競技数、審査員数 */ /* 配列Aにランク順に各競技の費用。配列Cの初期化も同時に */ for (i = 0; i < N; i++) { scanf("%d", &A[i]); C[i]=0; } /* 審査員の判定情報を読み込む。この値を超えない競技に1票 */ for (j = 0; j < M; j++){ scanf("%d", &Bj); for (i = 0; i < N; i++) { /* 各競技のランク順 A[0]から順にチェック */ if (A[i] <= Bj) { /* Bjを超えていない競技A[i] */ C[i]++; /* 1票入れて、ループを抜ける */ break; } } } maxi = 0; /* 暫定一位の競技。配列の添え字 */ maxp = C[0]; /* 暫定一位の得票数 */ /* 最大得票数の競技番号、配列の添え字を求める */ for (i = 1; i < N; i++) { if (maxp < C[i]) { maxi = i; maxp = C[i]; } } /* 配列の先頭は0から。競技は1種目からなので、出力調整 */ printf("%d\n", maxi+1); return 0; }