Codeforces Round #408 A. Buying A House

来源:互联网 发布:淘宝赚钱 编辑:程序博客网 时间:2024/06/07 01:24

题目网址: Codeforces Round #408 A. Buying A House

题意分析:

  • 题意: 有n间房子, 主人公喜欢的人住在房子m中, 每间房子的价格为a1, a2…an, 且价格为0表示该房子已卖出, 主人公有 k dollars, 求主人公能买到的房子距离喜欢的人最短的距离.

  • 思路: 主人公喜欢的人的房子向右延伸找价格合适且距离最近的, 向左延伸找价格合适且距离最近的, 选其中距离最近的即为结果. 注意边界问题的处理,如果到边界到没有合适的房子, 则距离设置一个很大的值, 如1e8.

代码:

#include <iostream>using namespace std;const int SIZE = 105;const int MAX = 1e8;int housePrice[SIZE];int main(int argc, char const *argv[]){    int n, m, k;    while (~scanf("%d %d %d", &n, &m, &k))    {        for (int i = 1; i <= n; ++i)        {            scanf("%d", &housePrice[i]);            if (0 == housePrice[i])            {                housePrice[i] = MAX;            }        }        int rDis = 0, lDis = 0;        for (int i = m + 1; i <= n; ++i)        {            ++rDis;            if (housePrice[i] <= k)            {                break;            }            if(i == n) rDis = MAX;        }        for (int i = m - 1; i >= 1; --i)        {            ++lDis;            if (housePrice[i] <= k)            {                break;            }            if(i == 1) lDis = MAX;        }        if(0 == lDis) lDis = MAX;        if(0 == rDis) rDis = MAX;        printf("%d\n", (lDis < rDis) ? lDis * 10 : rDis * 10);    }    return 0;}
原创粉丝点击