結果
| 問題 |
No.2851 Make Pairs
|
| コンテスト | |
| ユーザー |
ななり
|
| 提出日時 | 2024-09-09 23:10:11 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 6 ms / 2,000 ms |
| コード長 | 1,385 bytes |
| コンパイル時間 | 389 ms |
| コンパイル使用メモリ | 33,792 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-09-09 23:10:12 |
| 合計ジャッジ時間 | 1,157 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 8 |
ソースコード
#pragma GCC diagnostic ignored "-Wunused-result"
#pragma GCC optimize "Ofast"
#include <cstdint>
#include <cstdio>
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;
}
ななり