QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#345172 | #4797. Xormites | Kevin5307 | WA | 0ms | 3604kb | C++20 | 1.6kb | 2024-03-06 12:19:53 | 2024-03-06 12:19:54 |
Judging History
answer
//Author: Kevin
#include<bits/stdc++.h>
//#pragma GCC optimize("O2")
using namespace std;
#define pb emplace_back
#define mp make_pair
#define ALL(x) (x).begin(),(x).end()
#define rALL(x) (x).rbegin(),(x).rend()
#define srt(x) sort(ALL(x))
#define rev(x) reverse(ALL(x))
#define rsrt(x) sort(rALL(x))
#define sz(x) (int)(x.size())
#define inf 0x3f3f3f3f
#define lb(v,x) (int)(lower_bound(ALL(v),x)-v.begin())
#define ub(v,x) (int)(upper_bound(ALL(v),x)-v.begin())
#define uni(v) v.resize(unique(ALL(v))-v.begin())
using ll=long long;
using ull=unsigned long long;
using pii=pair<int,int>;
using i128=__int128;
void die(string S){puts(S.c_str());exit(0);}
int A[50005];
bool check(vector<int> vec)
{
int p1=0,p2=sz(vec)-1;
while(p1<p2&&vec[p1]==vec[p2])
{
p1++;
p2--;
}
if(p1>=p2) return true;
int cur=0;
int lst=-1;
for(int i=p1;i<=p2;i++)
{
int x=vec[i];
if(x==lst) cur^=1;
else
{
if(cur) return false;
cur=1;
lst=x;
}
}
if(cur) return false;
return true;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>A[i];
int xo=0;
for(int i=1;i<=n;i++)
xo^=A[i];
if(!xo)
puts("Draw");
else if(n%2==0)
puts("First");
else
{
int x=__lg(xo);
for(int i=1;i<=n;i++)
A[i]=A[i]>>x&1;
vector<int> v1,v2;
for(int i=1;i<n;i++)
v1.pb(A[i]);
for(int i=2;i<=n;i++)
v2.pb(A[i]);
bool flag=0;
if(A[1]) flag|=check(v2);
if(A[n]) flag|=check(v1);
if(flag)
puts("First");
else
puts("Second");
}
}
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3604kb
input:
3 2 3 3 2 3 5 3 4 4 4
output:
Draw First First
result:
wrong answer 3rd lines differ - expected: 'Second', found: 'First'