A. Sonya and Hotels

题目链接

Codeforces Round #495 (Div. 2)--A. Sonya and Hotels

题解

简单题。题意大概是给定一些点,求出所有与给定点中最近的点的距离为d的点的数目。
首先在第一个点的左侧与最后一个点的右侧必定有存在符合要求的点。之后判断两两相邻的点的距离,如果距离大于2d,则其中必定有两个符合要求的点,如果距离等于2d,则只有一个符合要求的点,如果距离小于2d则不存在符合要求的点。

代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n,d,temp,ans;
vector<int> a;

int main() {
    cin >> n >> d;
    int i = n;
    while (i--) {
        cin >> temp;
        a.push_back(temp);
    }
    sort(a.begin(), a.end());
    ans = 2;
    for (i = 0; i < n - 1; i++) {
        if (a[i + 1] - a[i] > 2 * d)ans += 2;
        else if (a[i + 1] - a[i] == 2 * d)ans++;
    }
    cout << ans;
}

标签: implementation

添加新评论