【第 6 题】移动电话 mobile-telephone

【问题描述】假定在某地区的第四代移动电话基站如下述方式运行。该地区划分
成很多四方块,这些四方形的小区域形成了 SxS 矩阵。该矩阵的行、列均从 0 开始
编码至 S-1。每个方块区域包含一个基站。方块内活动的手机数量是会发生变化的,
因为手机用户可能从一个方块区域进入到另一个方块区域,也有手机用户开机或关
机。每个基站会报告所在区域内手机活动数的变化。
写一个程序,接收这些基站发来来的报告,并应答关于指定矩形区域内的活动
手机数的查询。
【输入要求】输入从标准输入设备中读取表示查询的整数并向标准输出设备写入整
数以应答查询。输入数据的格式如下。每一行输入数据包含一个表示指令编号的整
数及一些表示该指令的参数、指令编号及对应参数的意义如下表所示。
指令编码      参数      意义
0    S 创建个的 SxS 矩阵并初始化为 0。该指令仅发送一次, 且总是为第一条指令
1    X Y A   区域(X、Y)增加 A 个活动手机
2    L B R T 查询所有方块区域(X、Y)内活动手机数量之和。其中,L≤X≤R、B≤Y≤T
3                 终止程序、该指令也仅发送一次,且必为最后一条指令
假定输入中的各整数值总是在合法范围内,无需对它们进行检验。具体说,例
如A是一个负数,它不可能将某一方块区域中的手机数减小到 0 以下。下标都是从 0
开始的,即若矩阵规模为 4x4、必有 0≤X≤3 且 0≤Y≤3。
我们假定:
矩阵规模:1x1≤SxS≤700x700
任何时候方块区域内的活动手机数:0≤V≤32767
修改值:-32768≤A≤32767
不存在指令号:U>3
整个区域内的最大活动手机数:M= 2 30
【输出要求】你的程序对除了编号为 2 以外的指令无需做任何应答。若指令编号为 2,
程序须向标准输出设备写入一行应答的答案。
【输入样例】
0 4
1 1 2 3
2 0 0 2 2
1 1 1 2
1 1 2 -1
2 1 1 2 3
3
【输出样例】
3
4
#include <iostream>
using namespace std;
int a[701][701];
int main(){
	int n,S,X,Y,A,L,B,R,T,sum=0;
	while(1+1==2){
		cin>>n;
		if(n==0){
			cin>>S;
		}
		if(n==1){
			cin>>X>>Y>>A;
			a[X][Y]+=A;
		}
		if(n==2){
			cin>>L>>B>>R>>T;
			for(int i=L;i<=R;i++){
				for(int j=B;j<=T;j++){
					sum+=a[i][j];
				}
			}
			cout<<sum<<endl;
			sum=0;
		}
		if(n==3){
			return 0;
		}
	}
	return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值