牛客练习赛 68 A

牛牛的mex

https://ac.nowcoder.com/acm/contest/7079/A

A 牛牛的mex

题意:给一个 的长为 的排列 ,多次询问,每次给出 ,问

做一个前缀最小值和后缀最小值,每次询问比一下即可。

#include <bits/stdc++.h>
using namespace std;
int read(){
    int f = 1, x = 0;
    char c = getchar();
    while (c < '0' || c > '9'){if(c == '-') f = -f; c = getchar();}
    while (c >= '0' && c <= '9')x = x * 10 + c - '0', c = getchar();
    return f * x; 
}
int n, q, a[100005], mini1[100005], mini2[100005];
void init(){
    n = read(), q = read();
    for (int i = 1; i <= n; ++i) {
        a[i] = read();
    }
    mini1[0] = n;
    for (int i = 1; i <= n; ++i)
        mini1[i] = min(mini1[i - 1], a[i]);
    mini2[n + 1] = n;
    for (int i = n; i >= 1; --i)
        mini2[i] = min(mini2[i + 1], a[i]);
}
void solve(){
    while (q--){
        int l = read(), r = read();
        printf("%d\n", min(mini1[l - 1], mini2[r + 1]));
    }
}
int main(){
    init();
    solve();
    return 0;
}
全部评论
“0 \leq a_i < n且 a_i 互不相同” QAQ
点赞 回复 分享
发布于 2020-08-28 22:20

相关推荐

评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务