d889. 2.黑傑克(jack)
http://zerojudge.tw/ShowProblem?problemid=d889
內容 :
黑傑克是為遠近馳名的醫生,對於各種疑難雜 症,他總是對症下藥,並且藥到病除;更難能可貴的是,黑傑克醫生對於貧窮的百姓,一律不收取任何的醫療費用,因此他的義診行為,以廣夠大家一致的推崇與稱 頌,每日慕名而來的病患更是絡繹不絕。為了服務更多的病患,黑傑克立下了看診規則如下:
1.每位病患看診時間,無論病症輕重,一律為五分鐘整。
2.依照先來後到的原則依序看診(恕不接受插隊與請託)。
3.醫師將全力看診,只要有病患候診,便不會中途休息。
4.為服務更多地區的病患,若連續三十分鐘(不含三十分鐘整)沒有病患候診,便結束當地的行程,並前往下一個村莊看診。
舉 例來說:若黑傑克在第0分中時抵達診所,三位病患分別在第1,3,41分鐘時抵達診所,則黑傑克會依序看診第1位病患(第1至5分鐘)旱地2位病患(第6 至10分鐘),然後等待30分鐘(第11至40分鐘),由於都沒有病患前來診所看診,便結束看診,並於第41分鐘啟程前往下一間診所。因此儘管在第41分 鐘時,又有病患前來診所,但由於黑傑克已經離開了,便無法接受看診。
請寫一個程式,計算黑傑克在第幾分鐘時離開診所。
條件限制:
(1)在所有的測試資料中, 我們假設黑傑克都是在第0分鐘時抵達診所
(2)前來看診的病患人數為N,1<=N<=100,且第N個病患抵達診所的時間,必定早於第10,000分鐘。
輸入說明
:
輸出說明
:
範例輸入 :
3 1 3 41
範例輸出 :
41
提示
:
(1)測資有誤請告知感謝
(2)另外兩題本人都只過了局部測資
請會的人幫忙出吧
出處
:
/**********************************************************************************/
/* Problem: d889 "2.黑傑克(jack)" from 99北市賽 */
/* Language: C */
/* Result: AC (4ms, 308KB) on ZeroJudge */
/* Author: morris1028 at 2011-06-09 23:06:37 */
/**********************************************************************************/
#include<stdio.h>
int next(int mark[]) {
static int index = 0;
while(1) {
if(mark[index]) {
mark[index]--;
return index;
}
else index++;
}
}
main() {
int n, a, x;
while(scanf("%d", &n) == 1) {
int mark[10001] = {};
for(a = 0; a < n; a++)
scanf("%d", &x), mark[x]++;
int Ans = 0;
for(a = 0; a < n; a++) {
x = next(mark);
if(x > Ans + 29) break;
else {
if(x < Ans) Ans += 5;
else Ans = x + 5;
}
}
Ans += 30;
printf("%d\n", Ans);
}
return 0;
}
下一篇:d913. 1. 彈珠配置