Submission #1319089

#TimeUsernameProblemLanguageResultExecution timeMemory
1319089neonglitchDEL13 (info1cup18_del13)C++20
22 / 100
853 ms1592 KiB
#include <iostream>
using namespace std;
const int N=2e5+10;
int a[N],gap[N];
bool dp[N][200];
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++)for(int j=0;j<=n+1;j++)dp[i][j]=0;
	dp[1][gap[1]]=1;
	for(int i=1;i<=k+1;i++)
	{
		for(int j=n+1;j>=3;j--)
			dp[i][j-2]|=dp[i][j];
		for(int j=0;j<=n+1;j++)
		{
			if(j<=gap[i+1])
			{
				for(int k1=gap[i+1];j<=k1;)
				{
					dp[i+1][k1-j]|=dp[i][j];
					if(k1>2)k1-=2;
					else break;
				}
			}
		}
	}
	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...