http://codeforces.com/problemset/problem/811/B
题意:
给定一个长度为 N 不重复的数字序列,然后对其进行 M 次询问。
每次询问含L,R,X三个值,问如果数字序列中的 L ~ R 位置范围内进行从小到大的排序后,原本位置为 X 的数字是否变了。
由于 N 和 M 的范围都很小(10000),甚至不用模拟排序,对于每次询问直接 L ~ R 过一遍看有多少个元素小于 X 位置的那个,如果这个计数正好等于 X-L,那么位置为 X 的那个元素自然不会变。
贴上水码:
#include
using namespace std;
int p[10050];
int main()
{
int n, m;
int l, r, x;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
cin >> p[i];
}
for (int i = 0; i < m; i++)
{
cin >> l >> r >> x;
int cnt = 0;
for (int j = l-1; j <= r-1; j++)
{
if (p[j] < p[x-1])
cnt++;
}
if (cnt == x - l)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章