湖大CG满分教程:数组强化13松雅的新旅馆

【问题描述】

      松雅终于确定了新建旅馆的城市,她看中了该城市临海一条笔直的街道,此处风景优美,街道另一边是海滩,不允许有任何建筑。

      不妨将该街道视作为一条坐标轴(x-轴),街道上已有 n 座方形建筑,它们的边平行于 x 轴,其中的一条横边的位于坐标轴上,其中心点为整数坐标。这些房子不会交叠,但可以相互挨着。

      松雅所建的旅馆的横边长为 t,并且至少与一座已有的建筑相互挨着,这样她可以节省一些建设费用,当然,这座建筑的一条横边必须位于 x 轴上,房子不能交叠。

      给出所有已有的建筑的中心点和横边长(忽略建筑墙体的厚度),请你帮她找出可以新建旅馆的位置有多少?

【输入形式】

      输入的第一行为两个正整数 n 和 t( nt ≤ 1000),分别该街道上已有的建筑数量以及她所建旅馆的横边长。

      接下来的 n 行,每行两个整数 xi 和 ai,分别表示每座已有建筑位于坐标轴上的横边的中心点和横边长,其中,-20000 ≤ xi ≤20000,1≤ ai ≤1000。

【输出形式】

      请输出可以新建旅馆的可能的位置的数量。
【样例输入1】

2 2
0 4
6 2

【样例输出1】

4

【样例输入2】

2 2
0 4
5 2

【样例输出2】

3

【样例输入3】

2 3
0 4
5 2

【样例输出3】

2
#include <iostream>//偷数据代码
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
	int n,t;
	cin>>n>>t;cout<<n<<" "<<t<<endl; 
	int x[n],a[n];
	for(int i=0;i<n;i++)
	{
	  cin>>x[i]>>a[i];
	  cout<<x[i]<<" "<<a[i]<<endl;
	}
    
}
#include <iostream>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
	long n,t;
	cin>>n>>t;
	float xi[n],aj[n];
	for(int i=0;i<n;i++)
	{
	  cin>>xi[i]>>aj[i];
	}
    int s=0;
    float d[n-1];
    float lt[n],rt[n];
	for(int jb=0;jb<n;jb++)
    {
    rt[jb]=xi[jb]+aj[jb]/2;
    lt[jb]=xj[jb]-aj[jb]/2;
    }
    sort(lt,lt+n);
    sort(rt,rt+n);
    for(int jb=0;jb<n-1;jb++)
    {
    d[j]b=lt[jb+1]-rt[jb];
    }
	for(int y=0;y<n-1;y++)
    {
    if(d[y]==t) s++;
    if(d[y]<t) s=s;
    if(d[y]>t) s+=2;
    }
    s+=2;
    cout<<s;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值