2013年9月19日 星期四

TIOJ 1411 Ragnarök

[預處理+HASH]
搞了好久,原來INPUT 不只 1 或 -1 或 0喔= =

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<map.h>
#define MAX 1000000
int down[2*MAX+1];
int main()
{
 int n;
 while(scanf("%d",&n)!=EOF)
 {
  int inp;
  int _max=0;
  int cnt=0;
  memset(down,-1,(2*MAX+1)*sizeof(int));
  down[MAX]=0;
  for(int ln=1;ln<=n;ln++)
  {
   scanf("%d",&inp);
   if(inp>0)
    cnt++;
   else if(inp<0)
    cnt--;
   if(down[cnt+MAX]==-1)
    down[cnt+MAX]=ln;
   else
    _max=(_max<(ln-down[cnt+MAX])) ?  (ln-down[cnt+MAX]):_max;
  }
  printf("%d\n",_max);
 }
 return 0;
}

沒有留言:

張貼留言