內容 :
在家庭中我們偶爾會遇到這樣的狀況:在你打開一些家庭電器,如:電燈,電視,洗衣機……之後,當你打開微波爐的一瞬間,跳電了。因為電力使用過多超過保險 絲的最高負載。當然,這是一種安全措施,避免電線過熱燒掉房子。但是,如果在我們打開電器開關之前可以知道打開之後是否會造成保險絲燒掉,那不是很好嗎?
這個程式的任務就是要檢查打開某些電器開關之後,所有使用中的電器其總用電量是否會超過保險絲的容量。
這個程式的任務就是要檢查打開某些電器開關之後,所有使用中的電器其總用電量是否會超過保險絲的容量。
輸入說明 :
輸入資料包含好幾筆測試資料,每筆測試資料的第一行有3個整數 n、m、c, n 代表總共有多少個電器用品(n<=20), m 代表共有多少次電器用品開關的動作, c 代表保險絲的容量。
接下來的 n 行各有一個整數 i ,分別代表第1個電器,第2個電器......第n個電器用品使用時需要的電流。
再接下來的的m行,每行有一個介於 1 到 n 之間的整數 k,代表開/關第 k 個電器用品。注意:對同一個電器用品,第一次動作為開,第二次動作為關,依此類推。假設一開始時所有的電器用品的狀態均為關著的。
接下來的 n 行各有一個整數 i ,分別代表第1個電器,第2個電器......第n個電器用品使用時需要的電流。
再接下來的的m行,每行有一個介於 1 到 n 之間的整數 k,代表開/關第 k 個電器用品。注意:對同一個電器用品,第一次動作為開,第二次動作為關,依此類推。假設一開始時所有的電器用品的狀態均為關著的。
n = m = c = 0代表輸入結束
輸出說明 :
對於每筆測試資料,如果保險絲燒掉,請輸出:Fuse was blown.
如果保險絲沒有燒掉,請輸出:Fuse was not blown. 並且輸出在開關的過程中出現的最大總用電量。
如果保險絲沒有燒掉,請輸出:Fuse was not blown. 並且輸出在開關的過程中出現的最大總用電量。
每組測試資料後請輸出一空白列。請參考Sample output。
範例輸入 : 
2 2 10 5 7 1 2 3 6 10 2 5 7 2 1 2 3 1 3 0 0 0
範例輸出:
Sequence 1 Fuse was blown. Sequence 2 Fuse was not blown. Maximal power consumption was 9 amperes.
標籤:
出處:
import java.util.Scanner;
public class UVAc094 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int count=1;
while(sc.hasNext()){
int n=sc.nextInt(),m=sc.nextInt(),c=sc.nextInt();
int max=0,total=0;
if(n==0 && m==0 &&c==0) break;
int[] arr=new int[n+1];
for(int i=1;i<=n;i++)
arr[i]=sc.nextInt();
boolean[] off=new boolean[m+1];
for(int i=0;i<=m;i++)
off[i]=false;
for(int i=1;i<=m;i++){
int num=sc.nextInt();
if(off[num]==false){
total+=arr[num];
off[num]=true;
if(total>max)
max=total;
}else{
total-=arr[num];
off[num]=false;
}
}
if(c<total){
System.out.println("Sequence "+count);
System.out.println("Fuse was blown.");
}else{
System.out.println("Sequence "+count);
System.out.println("Fuse was not blown.");
System.out.println("Maximal power consumption was "+max+" amperes.");
}
count++;
}
}
}
沒有留言:
張貼留言