QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#150559#4912. WereYouLastzhouhuanyi82 4856ms4948kbC++142.3kb2023-08-25 20:32:262023-08-25 20:32:27

Judging History

This is the latest submission verdict.

  • [2023-08-25 20:32:27]
  • Judged
  • Verdict: 82
  • Time: 4856ms
  • Memory: 4948kb
  • [2023-08-25 20:32:26]
  • Submitted

answer

#include<bits/stdc++.h>
#define N 7
using namespace std;
bool query(int);
void modify(int,bool);
int a[N+1]={0,5,4,3,2,2},b[N+1]={0,6,5,4,3,2},c[N+1]={0,7,6,5,4,3,1},d[N+1];
bool WereYouLast(int n,int m)
{
	if (n==(1<<10))
	{
		for (int i=1;i<=10;++i)
			if (!query(i))
			{
				for (int j=1;j<=i-1;++j) modify(j,0);
				modify(i,1);
				return 0;
			}
		return 1;
	}
	else if (n==(1<<16))
	{
		int res=4;
		bool op;
		for (int i=1;i<=5;++i)
		{
			if (i==5||!query(i))
			{
				for (int j=1;j<=a[i];++j) d[j]=query(res+j);
				op=1;
				for (int j=1;j<=a[i];++j) op&=d[j];
				if (op) return 1;
				for (int j=1;j<=a[i];++j)
					if (!d[j])
					{
						d[j]=1,modify(res+j,1);
						for (int k=1;k<=j-1;++k) d[k]=0,modify(res+k,0);
						break;
					}
				op=1;
				for (int j=1;j<=a[i];++j) op&=d[j];
				if (i!=5&&op)
				{
					for (int j=1;j<=a[i];++j) modify(res+j,0);
					modify(i,1);
				}
				for (int j=1;j<=i-1;++j) modify(j,0);
				return 0;
			}
			res+=a[i];
		}
	}
	else if (n==(1<<20))
	{
		int res=4;
		bool op;
		for (int i=1;i<=5;++i)
		{
			if (i==5||!query(i))
			{
				for (int j=1;j<=b[i];++j) d[j]=query(res+j);
				op=1;
				for (int j=1;j<=b[i];++j) op&=d[j];
				if (op) return 1;
				for (int j=1;j<=b[i];++j)
					if (!d[j])
					{
						d[j]=1,modify(res+j,1);
						for (int k=1;k<=j-1;++k) d[k]=0,modify(res+k,0);
						break;
					}
				op=1;
				for (int j=1;j<=b[i];++j) op&=d[j];
				if (i!=5&&op)
				{
					for (int j=1;j<=b[i];++j) modify(res+j,0);
					modify(i,1);
				}
				for (int j=1;j<=i-1;++j) modify(j,0);
				return 0;
			}
			res+=b[i];
		}
	}
	else if (n==(1<<26))
	{
		int res=5;
		bool op;
		for (int i=1;i<=6;++i)
		{
			if (i==6||!query(i))
			{
				for (int j=1;j<=c[i];++j) d[j]=query(res+j);
				op=1;
				for (int j=1;j<=c[i];++j) op&=d[j];
				if (op) return 1;
				for (int j=1;j<=c[i];++j)
					if (!d[j])
					{
						d[j]=1,modify(res+j,1);
						for (int k=1;k<=j-1;++k) d[k]=0,modify(res+k,0);
						break;
					}
				op=1;
				for (int j=1;j<=c[i];++j) op&=d[j];
				if (i!=6&&op)
				{
					for (int j=1;j<=c[i];++j) modify(res+j,0);
					modify(i,1);
				}
				for (int j=1;j<=i-1;++j) modify(j,0);
				return 0;
			}
			res+=c[i];
		}
	}
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 1ms
memory: 3724kb

input:

1024 10

output:

12345876 10 10

result:

ok Correct Answer.
C1 = 10.
C2 = 10.

Subtask #2:

score: 20
Accepted

Test #2:

score: 20
Accepted
time: 5ms
memory: 4948kb

input:

65536 100000

output:

12345876 6 6

result:

ok Correct Answer.
C1 = 6.
C2 = 6.

Subtask #3:

score: 24
Acceptable Answer

Test #3:

score: 24
Acceptable Answer
time: 76ms
memory: 4896kb

input:

1048576 100000

output:

12345876 7 7

result:

points 0.80 Correct Answer.
C1 = 7.
C2 = 7.

Subtask #4:

score: 28
Acceptable Answer

Test #4:

score: 28
Acceptable Answer
time: 4856ms
memory: 4896kb

input:

67108864 100000

output:

12345876 8 8

result:

points 0.70 Correct Answer.
C1 = 8.
C2 = 8.