zoukankan      html  css  js  c++  java
  • 九度 1334

      http://ac.jobdu.com/problem.php?id=1334

    没仔细读题,id>=0,开始为了图省事,把0当成无效的标志了,另外还有一处,q-num+1,本来没算错的,但是去括号时忘了变号,写成了q-num-1,导致十个数据只能过三个,改过来直接全过,看了下榜,居然还是第一个~~

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int n, m, k;
    int id, num;
    int flag[102];
    char command[10];
    
    bool
    check (int *start, int length)
    {
      int *q = start + length - 1;
      while (start <= q)
        {
          if ((*start) != -1)
    	{
    	  return false;
    	}
          start++;
        }
      return true;
    }
    
    void
    mark (int *start, int id, int length)
    {
      int *q = start + length - 1;
      while (start <= q)
        {
          *start = id;
          start++;
        }
    }
    
    int
    main ()
    {
      while (scanf ("%d%d", &n, &m) != EOF)
        {
          int *mat = (int *) malloc (sizeof (int) * n * n);
          int i;
          int *p = mat;
          for(i=0;i<102;i++)
    	flag[i]=-1;
          for (i = 1; i <= n * n; i++)
    	{
    	  *p = -1;
    	  p++;
    	}
          scanf ("%d", &k);
          for (i = 1; i <= k; i++)
    	{
    	  scanf ("%s",command);
    	  
    	  if (strcmp (command, "in") == 0)
    	    {
    	      scanf("%d%d",&id,&num);
    	      if (flag[id]!=-1)
    		{
    		  printf ("no\n");
    		  continue;
    		}
    	      bool fflag=false;
    	      int *p = mat;
    	      int *q = mat + n * n-1;
    	      if(num>n*n){
    		printf("no\n");
    		continue;
    		}	      
    	      while (p <= q - num+1)
    		{
    		  if (check (p, num))
    		    {
    		      printf ("yes\n");
    		      mark (p, id, num);
    		      flag[id]=id;
    		      fflag=true;
    		      break;
    		    }
    		  p++;
    		}
    	      if (!fflag)
    		printf ("no\n");
    	    }
    	  else if (strcmp (command, "out") == 0)
    	    {
    	      scanf("%d",&id);
    	      if (flag[id]==-1)
    		{
    //		  printf ("no\n");
    		  continue;
    		}
    	      flag[id] = -1;
    	      int *p = mat;
    	      int *q = mat + n * n-1;
    	      while (p <= q)
    		{
    		  if (*p == id)
    		    *p = -1;
    		  p++;
    		}
    //	      printf ("yes\n");
    	    }
    	}
          free (mat);
        }
      return 0;
    }
    
  • 相关阅读:
    iOS Core Animation 简明系列教程
    常用的iOS第三方资源
    超全!整理常用的iOS第三方资源
    iOS使用Workspace来管理多项目 ( 转 )
    转 与App Store审核的斗智斗勇
    Python -- Web -- WSGI
    Python -- Web
    Python -- 序列化
    Python -- 文档测试
    Python -- 单元测试
  • 原文地址:https://www.cnblogs.com/yangce/p/2256480.html
Copyright © 2011-2022 走看看