QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#72834 | #5120. Power of Two | zhouhuanyi | WA | 3ms | 5148kb | C++11 | 2.4kb | 2023-01-19 17:08:18 | 2023-01-19 17:08:19 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<vector>
#define N 65536
using namespace std;
int read()
{
char c=0;
int sum=0;
while (c<'0'||c>'9') c=getchar();
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum;
}
int T,n,x,y,z,rcnt[N+1];
bool used[N+1];
vector<int>p[N+1];
int main()
{
vector<int>A;
vector<int>B;
vector<int>C;
vector<int>D;
int d,op;
T=read();
for (int qt=1;qt<=T;++qt)
{
n=read(),x=read(),z=read(),y=read(),A.clear(),B.clear(),C.clear(),D.clear();
for (int i=0;i<=n-1;++i) rcnt[i]=used[i]=0;
for (int i=1;i<=n;++i) d=read(),rcnt[d]++;
if (x)
{
op=1;
for (int i=n-1;i>=0;--i)
if (rcnt[i])
{
if (y) y--,C.push_back(i),rcnt[i]--,used[i]=1;
else if (z) z--,D.push_back(i),rcnt[i]--,used[i]=1;
while (rcnt[i])
{
if (x) x--,B.push_back(i),rcnt[i]--;
else if (y) y--,C.push_back(i),rcnt[i]--;
else z--,D.push_back(i),rcnt[i]--;
}
}
for (int i=1;i<B.size();++i) op&=(B[0]==B[i]);
for (int i=0;i<=n-1;++i) rcnt[i]=0;
for (int i=0;i<C.size();++i) rcnt[C[i]]++;
for (int i=0;i<=n-1;++i)
if (rcnt[i]&&!(rcnt[i]&1))
{
if (op&&B[0]==i) A.push_back(i),A.push_back(i),rcnt[i]-=2;
else A.push_back(i),rcnt[i]--;
}
C.clear();
for (int i=0;i<=n-1;++i)
for (int j=1;j<=rcnt[i];++j)
C.push_back(i);
}
else
{
for (int i=n-1;i>=0;--i)
if (rcnt[i])
{
used[i]=1;
if (!(rcnt[i]&1))
{
if (z) D.push_back(i),rcnt[i]--,z--;
else used[i]=0;
}
}
for (int i=n-1;i>=0;--i)
while (rcnt[i]&&z)
D.push_back(i),rcnt[i]--,z--;
for (int i=0;i<=n-1;++i)
for (int j=1;j<=rcnt[i];++j)
C.push_back(i);
}
if (qt==4) cout<<n<<' '<<x<<' '<<y<<' '<<z<<endl;
if (T!=16)
{
for (int i=n-1;i>=0;--i) printf("%d",used[i]);
puts("");
for (int i=0;i<A.size();++i) printf("^");
for (int i=0;i<B.size();++i) printf("&");
for (int i=0;i<C.size();++i) printf("^");
for (int i=0;i<D.size();++i) printf("|");
puts("");
for (int i=0;i<A.size();++i) printf("%d ",A[i]);
for (int i=0;i<B.size();++i) printf("%d ",B[i]);
for (int i=0;i<C.size();++i) printf("%d ",C[i]);
for (int i=0;i<D.size();++i) printf("%d ",D[i]);
puts("");
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 3ms
memory: 5148kb
input:
4 4 3 0 1 1 0 1 0 4 1 0 3 1 0 1 0 8 0 2 6 1 5 5 7 1 5 5 7 8 0 0 8 1 5 5 7 1 5 5 7
output:
0010 &&&^ 1 0 0 1 0011 ^&^^ 0 1 0 1 10100000 ^^^^^^|| 1 1 5 5 5 7 7 5 8 0 8 0 00000000 ^^^^^^^^ 1 1 5 5 5 5 7 7
result:
wrong answer Token parameter [name=ans] equals to "8", doesn't correspond to pattern "[01]{8}" (test case 4)