题解:P12079 [OOI 2025] Card Flip
注意到谁能抢到最后一个能翻面(即
我们记这张卡片为
考虑什么样的卡片能影响
注意到这个找卡片的过程可以递归,那么只要一直找到新的
具体实现上可以先按
#include <bits/stdc++.h>
#define ull unsigned long long
#define ll long long
#define uint unsigned int
#define pii pair<int,int>
#define io ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
inline int read(){
int x=0;bool f=1;char c=getchar();
while(c>'9'||c<'0'){if(c=='-')f=0;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
return f?x:-x;
}
int n,m;
pii p[500005];
int main(){
n=read(),m=read();
for(int i=1;i<=n;i++) p[i].first=read();
for(int i=1;i<=n;i++) p[i].second=read();
sort(p+1,p+n+1);
int now=n;
while(1){
int i;
for(i=now-1;i;i--)
if(p[i].second<p[now].first)
break;
if(!i) break;
now=i;
}
bool flg=1;
for(int i=1;i<now;i++)
flg^=(p[i].second>p[now].first);
for(int c;m--;)
c=read(),flg^=(c<p[now].first);
cout<<(flg?"First\n":"Second\n");
return 0;
}