hdu 4907 Task schedule

来源:互联网 发布:净利润算法 编辑:程序博客网 时间:2024/06/11 00:12

题意:给出N个数和M次查询,每次查询是找到比自己大(或等于)的在N个数中不存在的第一个数。

用一个数组标记一个数是否存在,再找到这个数之后不存在的第一个数。


#include<cstdio>#include<iostream>using namespace std;#define mem(a,b) memset(a,b,sizeof a);const int N=100005;int n,m,ans[2*N];void solve(){mem(ans,0);ans[2*N-9]=2*N-9;//哨兵scanf("%d %d",&n,&m);for(int i=0,t;i<n;i++)scanf("%d",&t),ans[t]=1;for(int i=2*N-10;i>=0;i--){//找到后面第一个0if(ans[i]==0) ans[i]=i;else ans[i]=ans[i+1];}while(m--){int q;scanf("%d",&q);printf("%d\n",ans[q]);}}int main(){int tt=1,cas;cin>>tt;for(cas=1;cas<=tt;cas++){solve();}return 0;}


0 0
原创粉丝点击