NC210690. 牛牛的mex
描述
输入描述
第一行两个整数 表示序列长度和询问次数。接下来一行 个非负整数,表示序列 。接下来 行,每行两个整数 表示询问的区间。
输出描述
行,每行表示询问的答案。
示例1
输入:
5 2 4 3 0 1 2 2 4 1 5
输出:
2 5
C++14(g++5.4) 解法, 执行用时: 50ms, 内存消耗: 1208K, 提交时间: 2020-08-28 19:09:04
#include<cstdio> int ma[100008],mb[100008]; int main(){ int n,q; scanf("%d%d",&n,&q); for(int i=1;i<=n;i++){ scanf("%d",ma+i); mb[ma[i]]=i; } while(q--){ int x,y; scanf("%d%d",&x,&y); int a=0; while(mb[a]>=x&&mb[a]<=y&&a<=n){ a++; } printf("%d\n",a); } }
C++(g++ 7.5.0) 解法, 执行用时: 339ms, 内存消耗: 3136K, 提交时间: 2022-11-05 23:51:35
#include<bits/stdc++.h> using namespace std; int a[100100],n,q,b[100100],x,y; int main() { cin>>n>>q; for (int i=1;i<=n;i++) { cin>>a[i]; b[a[i]]=i; } while (q--) { cin>>x>>y; for (int i=0;i<=n;i++) { if (b[i]>y||b[i]<x) { cout<<i<<endl; break; } } } }
C++ 解法, 执行用时: 390ms, 内存消耗: 1372K, 提交时间: 2021-11-12 16:33:02
#include<bits/stdc++.h> using namespace std; int a[100100],n,q,b[100100],x,y; int main() { cin>>n>>q; for (int i=1;i<=n;i++) { cin>>a[i]; b[a[i]]=i; } while (q--) { cin>>x>>y; for (int i=0;i<n;i++) { if (b[i]>y||b[i]<x) { cout<<i<<endl; break; } } } }