AC:50
WA:5
WA on Test 6
#include<bits/stdc++.h>
using namespace std;
template <typename T> inline void read(T& x) {
x=0;T f=1;
char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
x=x*f;
return;
}
template <typename T,typename ...Arg>void read(T& x,Arg& ...arg){
read(x);
read(arg...);
}
template <typename T>void write(T x) {
if(x<0)putchar('-'),x=-x;
if(x<10)putchar(x+'0');
else write(x/10),putchar(x%10+'0');
}
template <typename T,typename ...Arg>void write(T& x,Arg& ...arg){
write(x);
putchar(' ');
write(arg...);
}
#define MAXN 100005
int n,k;
int num[MAXN];
inline bool cmp(int x,int y){return x>y;}
signed main(){
memset(num,-1,sizeof(num));
read(n);
for(int i=1;i<=n;i++) read(num[i]);
sort(num+1,num+n+1,cmp);
num[0]=num[1];
for(k=0;k<=n;k++) if(num[k]<=k){k--;break;}
int l=(num[k+1]-k),r;
for(r=k+1;r<=n+1;r++){
if(num[r]<=k){
r--;
break;
}
}
r=(r-k);
if(l%2&&r%2) printf("Second\n");
else printf("First\n");
return 0;
}