【ACM打卡】1195
1195
* 说的是家里有很多电器,但是电器全开的话就会超过家庭用电的最大功率。
* 然后给你一些电器和各个电器所使用的功率。然后又给出了几个操作,问按照操作的顺序
* 是否会超出额定功率。如果超出就输出超出了。
* 如果没有那么就输出按照这个操作所能达到的最大功率。
* op数组不知道开多大,2000可过。
英文真的。。。借鉴了别人的哎。困死了。不能白天总不在家搞学习啊啊啊!!!晚上11点多才开始学习我的皮肤呵呵呵。
笔记:
void *memset(void *s, int ch, size_t n);函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
1195
#include <stdio.h>
#include <string.h>
int main()
{
int flag[22],device[22],c,op[2000];
int n,m;
int t = 1;
while(scanf("%d %d %d",&n,&m,&c)!=EOF&&n&&m&&c)
{
int i,j;
int tmp = 0;
for(i = 1;i<=n;i++)
{
scanf("%d",&device[i]);
flag[i] = 0;
}
for(j = 1;j<=m;j++)
{
scanf("%d",&op[j]);
}
int sum = 0;
int max = 0;
for(j = 1;j<=m;j++)
{
if(!flag[op[j]])
{
sum+=device[op[j]];
flag[op[j]] = 1;
if(sum>c)
{
tmp = 1;
break;
}
}
else
{
sum-=device[op[j]];
flag[op[j]] = 0;
}
if(sum>max)
{
max = sum;
}
}
if(!tmp)
{
printf("Sequence %d\n",t);
printf("Fuse was not blown.\n");
printf("Maximal power consumption was %d amperes.\n",max);
}
else
{
printf("Sequence %d\n",t);
printf("Fuse was blown.\n");
}
t++;
printf("\n");
}
return 0;
}