제출 #14045

#제출 시각아이디문제언어결과실행 시간메모리
14045jinmo123이상한 수열 (OJUZ10_bizarre)C++98
24 / 100
1000 ms3036 KiB
#include <stdio.h>
#include <stdlib.h>

#define MAX 2000000
#define DEBUG 0

char hashtable[MAX + 1]; // LOL, initial value is 0! initial size is sizeof(void *) * 1415!

int main() {
  int N, b;
  scanf("%d", &N);
  int i;
  int n = 0;
  char is_lower_than_N = 1;
  for(i = 0; i < N; i++) {
    if(is_lower_than_N) { scanf("%d", &b); if(i == N - 1) { scanf("%d", &N); is_lower_than_N = 0; } }
    else b = n;
    char *h = &hashtable[b + MAX / 2];
    if(!*h) { *h = 1; n++; }
#if DEBUG
    if(!*h) { n++; hash *c=(hash *)malloc(sizeof(hash)); c->val = b; c->next = 0; *h = c; } // gee, need to initialize.
    else {
      hash *cur_h = *h;
      hash *prev_h;
      char found = 0;
      while(cur_h) {
        if(cur_h->val == b) {
          found = 1;
          break;
        }
        prev_h = cur_h;
        cur_h = cur_h->next;
      }
      if(!found) {
        cur_h = (hash *)malloc(sizeof(hash));
        cur_h->val = b;
        cur_h->next = 0;
        prev_h->next = cur_h;
        n++;
      }
    }
#endif
  }
  printf("%d", b);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...