結果
問題 | No.2851 Make Pairs |
ユーザー |
![]() |
提出日時 | 2024-09-09 23:10:54 |
言語 | C (gcc 13.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 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 8 |
ソースコード
#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; }