常量溢出,显示的是warning C4307: '-' : integral constant overflow,那位大神可以帮忙改一下

八了个戒 2017-12-11 09:55:34
#include<cstdio>
#include<iostream>
using namespace std;

int w[10010]; //每个同学的接水量
int lastw[10010]; //每个水龙头位置的同学还需要的接水量

int main()
{
int i, j;
int n, m;
int time = 0;

scanf("%d%d",&n,&m);
for (i=1; i<=n; i++) scanf("%d",&w[i]);

for (i=1; i<=m; i++) lastw[i] = w[i]; //一开始的时候,前m个同学会同时去接水
i = m + 1;
while (i <= n)
{
int time_min = (1<<31)-1;
for (j=1; j<=m; j++) //在水龙头前的m个同学中,找到最先接完水的同学所用的时间
{
time_min = min(time_min,lastw[j]);
}
time += time_min; //把最先接完水的同学所用的时间累加到总时间中
for (j=1; j<=m; j++) //计算最快的同学接完水的时候,在水龙头前的m个同学还需要的水量
{
lastw[j] -= time_min;
if (lastw[j] == 0)
{
lastw[j] = w[i];
i++;
}
}
}
time_min = 0;
for (i=1; i<=m; i++) //这时只剩下最后m个同学了,要让所有的同学都接完水,要找最后一个同学接完水所用的时间
{
time_min = max(time_min,lastw[i]);
}
time += time_min;

printf("%d\n",time);

return 0;
}
...全文
525 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2017-12-11
  • 打赏
  • 举报
回复
计算结果已经超过int能表示的范围,你可以使用long long int,当然这里只是一个警告,如果你确实希望越界后高位数据不再要了的话,可以不管他
赵4老师 2017-12-11
  • 打赏
  • 举报
回复
打开include\limits.h一眼!

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧