제출 #285857

#제출 시각아이디문제언어결과실행 시간메모리
285857PyqeMinerals (JOI19_minerals)C++14
70 / 100
29 ms2424 KiB
#include "minerals.h"
#include <bits/stdc++.h>

using namespace std;

long long nn[2],a[2][43069],sq[43069];
bitset<43069> vtd;

void Solve(int n)
{
	long long i,j,k,l=0,c,e;
	
	for(i=1;i<=n*2;i++)
	{
		k=Query(i);
		a[k==l][nn[k==l]]=i;
		nn[k==l]++;
		l=k;
	}
	for(i=0;i<n;i++)
	{
		vtd[i]=1;
	}
	for(i=0;1ll<<i<n;i++)
	{
		c=0;
		for(j=0;j<n;j++)
		{
			c+=(j>>i&1)!=vtd[j];
		}
		e=n-c<c;
		for(j=0;j<n;j++)
		{
			if(((j>>i&1)^e)!=vtd[j])
			{
				vtd[j]=!vtd[j];
				l=Query(a[0][j]);
			}
		}
		for(j=0;j<n;j++)
		{
			k=Query(a[1][j]);
			sq[j]|=(k==l^e)<<i;
			l=k;
		}
	}
	for(i=0;i<n;i++)
	{
		Answer(a[1][i],a[0][sq[i]]);
	}
}

컴파일 시 표준 에러 (stderr) 메시지

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:43:13: warning: suggest parentheses around comparison in operand of '^' [-Wparentheses]
   43 |    sq[j]|=(k==l^e)<<i;
      |            ~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...