結果
問題 | 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 |
ソースコード
#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; }