CF205A Little Elephant and Rozdil 题解

Content

有一头小象住在 \(\texttt{Rozdil}\) 小镇里,它想去其他的小镇旅行。

这个国家一共有 \(n\) 个小镇,第 \(i\) 个小镇距离 \(\texttt{Rozdil}\) 小镇的距离为 \(a_i\)。小象想去往离 \(\texttt{Rozdil}\) 最近的小镇,但是,如果这样的小镇不止一个的话,那么小象就会继续待在 \(\texttt{Rozdil}\)

现在,它想问你这个距离 \(\texttt{Rozdil}\) 最近的小镇的编号,或者,如果这样的小镇不止一个的话,请输出 \(\texttt{Still Rozdil}\)


一句话题意:给出 \(n\) 个数 \(a_1,a_2,...,a_n\),请找到最小的数的编号,如果最小数有多个,输出 \(\texttt{Still Rozdil}\)

数据范围:\(1\leqslant n\leqslant 10^5,1\leqslant a_i\leqslant 10^9\)

Solution

这道题目看上去比较麻烦,实则非常简单,就是让我们找到最小数的编号罢了。

介于 \(n\leqslant 10^5\),我想到了一个很容易实现的算法:先求出这个最小数,然后再在数列中扫一遍,扫出这个最小数出现的次数并标记它的位置,最后判断并输出。复杂度 \(\mathcal{O}(n)\),足以通过本题。

Code

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;

int n, a[100007], minx = 0x3f3f3f3f, minans, cnt;

int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i) {
		scanf("%d", &a[i]);
		minx = min(minx, a[i]);
	}
	for(int i = 1; i <= n; ++i)
		if(a[i] == minx)	minans = i, cnt++;
	if(cnt > 1)	printf("Still Rozdil");
	else	printf("%d", minans);
}
posted @ 2021-12-21 21:01  Eason_AC  阅读(31)  评论(0)    收藏  举报