結果

問題 No.2851 Make Pairs
ユーザー ななりななり
提出日時 2024-09-09 23:10:54
言語 C
(gcc 12.3.0)
結果
AC  
実行時間 4 ms / 2,000 ms
コード長 1,387 bytes
コンパイル時間 1,956 ms
コンパイル使用メモリ 30,720 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-09-09 23:10:57
合計ジャッジ時間 1,207 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
6,816 KB
testcase_01 AC 1 ms
6,940 KB
testcase_02 AC 4 ms
6,944 KB
testcase_03 AC 4 ms
6,944 KB
testcase_04 AC 4 ms
6,944 KB
testcase_05 AC 2 ms
6,940 KB
testcase_06 AC 3 ms
6,940 KB
testcase_07 AC 1 ms
6,940 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#pragma GCC diagnostic ignored "-Wunused-result"
#pragma GCC optimize "Ofast"

#include <stdint.h>
#include <stdio.h>

uint8_t c, t[200001] = {};
int64_t n = 0, z = 0;

int main() {
  fseek(stdin, 0, 2);
  int64_t istrlen = ftell(stdin);
  uint8_t istr[istrlen], *iptr = istr;
  fseek(stdin, 0, 0);
  fread(istr, 1, istrlen, stdin);
  while ((c = *iptr++) >= '0') n = n * 10 + (c - '0');

  while (--n >= 0) {
    int32_t a = *(int32_t*)iptr;

    if ((a | 0x30303030) == a) {
      int64_t _ = *(int16_t*)(iptr + 4);

      if ((_ | 0x3030) == _) {
        a = (((((a & 0xF0F0F0F) * 0xA01) >> 8 & 0xFF00FF) * 0x640001) >> 16) * 100 + (_ & 0xF) * 10 + (_ >> 8 & 0xF);
        iptr += 7;
      }
      else if ((_ | 0x30) == _) {
        a = (((((a & 0xF0F0F0F) * 0xA01) >> 8 & 0xFF00FF) * 0x640001) >> 16) * 10 + (_ & 0xF);
        iptr += 6;
      }
      else {
        a = ((((a & 0xF0F0F0F) * 0xA01) >> 8 & 0xFF00FF) * 0x640001) >> 16;
        iptr += 5;
      }
    }
    else if ((a | 0x3030) == a) {
      uint8_t _ = *(iptr + 2);

      if (_ >= '0') {
        a = (a & 0xF) * 100 + (a >> 8 & 0xF) * 10 + (_ - '0');
        iptr += 4;
      }
      else {
        a = (a & 0xF) * 10 + (a >> 8 & 0xF);
        iptr += 3;
      }
    }
    else {
      a &= 0xF;
      iptr += 2;
    }

    if (++t[a] == 2) {
      t[a] = 0;
      ++z;
    }
  }

  printf("%ld", z);
  return 0;
}
0