题目大意是找出没有在给定数列中最小的正数。
20分,水题,一开始写了个map暴力,果然可以过_(:3」∠)_
想了想,把所有正数排序去重一下,最差的情况就是从1到n都已经有了,详见代码。
#include <iostream> #include <cstring> #include <string> #include <sstream> #include <string> #include <cstdio> #include <cmath> #include <algorithm> #include <map> #define maxn 100005 #define INF 0x3f3f3f3f #define EPS 1e-6 #define pi acos(-1.0) using namespace std; typedef long long ll; int n,x; int a[maxn]; int main() { scanf("%d",&n); int p=0; for(int i=0;i<n;i++) { scanf("%d",&x); if(x>0) { a[p++]=x; } } sort(a,a+p); p=unique(a,a+p)-a; int ans,flag=0; for(int i=0;i<p;i++) { if(a[i]!=i+1) { flag=1; ans=i+1; break; } } if(flag) printf("%d\n",ans); else printf("%d\n",a[p-1]+1); }View Code