文章目录

题解 UVA11661 Burger Time?

由 hycqwq 发布

Problem

在一条路上,有饭店也有药店,一个位置可以兼而有之也可以一个都没有。

现在的问题是:距离最近的一个饭店和一个药店的距离是多少?

Solution

首先,如果有一个地方两种店都有,那么答案为 $0$。

其次,每次输入时记录一下上一个饭店和药店的位置,每一次位置更新时算一下现在前面的饭店和药店之间的距离,然后取最小值即可。

Code

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <string>
#include <cstring>
#include <cctype>
#include <cmath>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <map>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int inf = 0x3f3f3f3f;
#define elif else if
#define il inline

int l;

int main()
{
    while (cin >> l, l != 0)
    {
        char c;
        int ans = inf;
        int lr = ~inf, ld = ~inf;
        for (int i = 1; i <= l; i++)
        {
            cin >> c;
            if (c == 'R')
                lr = i;
            elif (c == 'D')
                ld = i;
            elif (c == 'Z')
                lr = ld = i;
            if (lr > 0 && ld > 0)
                ans = min(ans, abs(lr - ld));
        }
        cout << ans << endl;
    }
    return 0;
}

暂无评论

发表评论