Submission #1319513

#TimeUsernameProblemLanguageResultExecution timeMemory
1319513neonglitchDEL13 (info1cup18_del13)C++20
40 / 100
4 ms824 KiB
#include <iostream>
using namespace std;
const int N=2e5+10;
int a[N],gap[N];
bool dp[N][7];
int ch(int x)
{
	if(x==0)return 0;
	return 2-x%2;
}
void solve()
{
	int n,k;
	cin>>n>>k;
	a[0]=0;
	for(int i=1;i<=k+1;i++)
	{
		if(i<=k)
			cin>>a[i];
		else{
			a[i]=n+1;
		}
		gap[i]=a[i]-a[i-1]-1;
	}
	// gap[i]<=2
	for(int i=0;i<=k+1;i++)dp[i][0]=dp[i][1]=dp[i][2]=dp[i][3]=0;
	dp[1][ch(gap[1])]=1;
	for(int i=2;i<=k+1;i++)
	{
		if(dp[i-1][0])
		{
			dp[i][ch(gap[i]-0)]=1;
		}
		if(dp[i-1][1] and gap[i]>=1)
		{
			dp[i][ch(gap[i]-1)]=1;
		}
		if(dp[i-1][1] and ch(gap[i])>=1)
		{
			dp[i][ch(gap[i])-1]=1;
		}
		if(dp[i-1][2] and gap[i]>=2)
		{
			dp[i][ch(gap[i]-2)]=1;
		}
		if(dp[i-1][2] and ch(gap[i])>=2)
		{
			dp[i][ch(gap[i])-2]=1;
		}
	}
	int r=-1;
	if(dp[k+1][0])r=0;
	cout<<r<<endl;
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
}
#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...