寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C #Problem Set from Volume3 0319 C言語によるスコアの算出

C言語によるスコアの算出です。
問題の正解数と得点から、チームのスコアを計算するプログラムです。

・問題
 今年も白虎大学でプログラミングコンテストが開催されることになりました。
 コンテストではいくつかの問題が出題され、それぞれ難易度に応じた得点が割り当てられています。
 実行委員会は、解いた問題の数とそれらの得点の両方を考慮し、次のルールに基づいて各チームのスコアを計算することにしました。
 「あるチームが正解した問題のうち、得点が A 以上であるものが A 問以上あることを満たすような最大の A を、そのチームのスコアとする」
 あるチームが正解した問題の数と、それらの問題の得点から、チームのスコアを計算するプログラムを作成せよ。

・入力される値
 入力は以下の形式で与えられる。
   N
   p1 p2 ... pN
 1行目にチームが正解した問題の数 N (1 ≤ N ≤ 100) が与えられる。
 2行目に正解した各問題の得点 pi(1 ≤ pi ≤ 100) が与えられる。

・期待する出力
 チームのスコアを1行に出力する。

僕が作成、提出したコードは、以下のとおりです。

/*
 Problem Set from Volume3 0319 : Programming Contest
 http://judge.u-aizu.ac.jp/
 C言語によるスコアの算出
 https://neguse-atama.hatenablog.com
*/
#include<stdio.h>
int main(void) {
    int i,j,c,n,r=0,p[200];
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        scanf("%d",&p[i]);
    }
    for(i=1;i<=n;i++){
        c=0;
        for(j=1;j<=n;j++){
            if(p[j]>=i){c++;}
        }
        if(c>=i){
            r=i;
        }else{
            break;
        }
    }
    printf("%d\n",r);
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
Problem Set from Volume3 0319 : Programming Contest