開關打開要紀錄最高安培數即可。
/* ACM 661 Blowing Fuses
* mythnc
* 2012/01/03 23:17:33
* run time: 0.004
*/
#include <stdio.h>
#define MAXN 20
#define ON 1
#define OFF 0
typedef struct device {
int state;
int c;
} Device;
int maxpower(int, int);
int main(void)
{
int n, m, c, max, set;
set = 0;
while (scanf("%d %d %d", &n, &m, &c) && n != 0) {
max = maxpower(n, m);
if (max > c)
printf("Sequence %d\nFuse was blown.\n\n", ++set);
else {
printf("Sequence %d\nFuse was not blown.\n", ++set);
printf("Maximal power consumption was %d amperes.\n\n", max);
}
}
return 0;
}
/* maxpower: return the max consumption power
* during the sequence*/
int maxpower(int n, int m)
{
int max, i, number, sum;
Device dev[MAXN];
/* init */
for (i = 0; i < n; i++) {
scanf("%d", &dev[i].c);
dev[i].state = OFF;
}
/* switch start */
for (i = max = sum = 0; i < m; i++) {
scanf("%d", &number);
if (dev[number - 1].state == ON) {
dev[number - 1].state = OFF;
sum -= dev[number - 1].c;
}
else {
dev[number - 1].state = ON;
sum += dev[number - 1].c;
if (max < sum)
max = sum;
}
}
return max;
}
沒有留言:
張貼留言