1 solutions

  • 0
    @ 2023-12-3 21:35:25

    C++ :

    #include <set>
    #include <map>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <queue>
    #include <stack>
    #include <cctype>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <cassert>
    #include <cstdlib>
    #include <cstring>
    #include <sstream>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    typedef unsigned long long u64;
    
    struct Stack
    {
    	u64 a[1001];
    	int top;
    };
    
    int InitStack(Stack &S)
    {
    	S.top=-1;
    	memset(S.a,0,sizeof(S.a));
    	return 1;
    }
    void pop(Stack &s,int &mark)
    {
    	u64 temp;
    	for(int i = mark;i < s.top-1;i++)
    	{
    		s.a[i]=s.a[i+1];
    	}
    	s.top = s.top-2;
    }
    int main()
    {
    	int n;
    	Stack stack;
    	//freopen("lianliankan.in","r",stdin);
    	//freopen("lianliankan.out","w",stdout);
    	while(scanf("%d",&n)!=EOF)
    	{
    		InitStack(stack);
    		for(int i = 0;i < n;i ++)
    		{
    			scanf("%lld",&stack.a[i]);
    			stack.top++;
    		}
    		int mark = -1;
    
    		while(stack.top>0)
    		{
    			for(int i = 1;i <= 6;i++)
    			{
    				if(stack.top-i>=0)
    				{
    					if(stack.a[stack.top]==stack.a[stack.top-i])
    					{
    						mark = stack.top-i;
    						pop(stack,mark);
    						break;
    					}
    				}
    			}
    			if(mark == -1)
    				break;
    			mark=-1;
    		}
    		if(stack.top < 0)
    			cout << "1" << endl;
    		else
    			cout << "0" << endl;
    	}
    	return 0;
    }
    
    
    //
    //#include<stdio.h>
    //#include<stack>
    //#include<string.h>
    //using namespace std;
    //int main()
    //{
    //	int N;
    //	freopen("lianliankan.in","r",stdin);
    //	freopen("lianliankan.out","w",stdout);
    //	while(scanf("%d", &N) != EOF)
    //	{
    //		int a;
    //		int i, j, k;
    //		stack<int> sta;
    //		for(i = 0; i < N; ++ i)
    //		{
    //			scanf("%d", &a);
    //			sta.push(a);
    //		}
    //		int v[6], vis[6];
    //		int flag = 0;
    //		while(!flag)
    //		{
    //			for(i = 0; i < 6; ++ i)
    //			{
    //				v[i] = sta.top();
    //				sta.pop();
    //				if(sta.empty()) 
    //				{
    //					flag = 1;
    //					break;
    //				}
    //			}
    //			memset(vis, 0, sizeof(vis));
    //			for(j = 0; j <= i; ++ j)
    //			{
    //				if(vis[j]) continue;
    //				for(k = j + 1; k <= i; ++ k)
    //				{
    //					if(vis[k]) continue;
    //					if(v[j] == v[k])
    //					{
    //						vis[j] = vis[k] = 1;
    //						break;
    //					}
    //				}
    //			}
    //			for(j = i; j >= 0; -- j)
    //				if(!vis[j])
    //					sta.push(v[j]);
    //		}
    //		if(sta.empty()) printf("1\n");
    //		else printf("0\n");
    //	}
    //	return 0;
    //}
    //#include <iostream>
    //#include <cstdio>
    //#include <cstring>
    //#include <algorithm>
    //#include <cstdlib>
    //#include <ctime>
    //
    //typedef unsigned long long u64;
    //u64 random(u64 n)
    //{
    //	u64 t;
    //	if(n<=RAND_MAX)
    //	{
    //		t = rand();
    //		return t%n;
    //	}
    //	else
    //	{
    //		return rand()+random(n/(RAND_MAX+1))*(RAND_MAX+1);
    //	}
    //}
    //int main()
    //{
    //	freopen("lianliankan.in","w",stdout);
    //	srand(time(NULL));
    //
    //	printf("2\n1 1\n");
    //	printf("3\n1 1 1\n");
    //	printf("2\n1000000 1\n");
    //	for(int i = 0;i < 50;i ++)
    //	{
    //		int N = rand()%100+1;
    //		printf("%d\n",N);
    //		for(int k = 0;k < N;k ++)
    //		{
    //			u64 ai = random(2000000000);
    //			printf("%lld ",ai);
    //		}
    //		printf("\n");
    //	}
    //	return 0;
    //}
    
    
    • 1

    Information

    ID
    1323
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    (None)
    # Submissions
    0
    Accepted
    0
    Uploaded By