Submission
Status:
(PP-SSSSSSSSSS)(P-SSSSSSS)(-SSSSSSSSS)(-SSSSSSSSS)(-SSSSSSSSSSSSS)(-SSSSSSSSSSSSSSSSSS)(-SSSSSSSSSSSSSSSSSSSSS)
Subtask/Task Score:
{0/4}{0/4}{0/5}{0/7}{0/25}{0/34}{0/21}
Score: 0
User: Fake-Suntornphu
Problemset: ร้านปลอดภาษี (Duty Free)
Language: cpp
Time: 0.290 second
Submitted On: 2026-04-05 20:45:33
// inspired by khunnie05
// made with <3 by innocenthuman
// c++ in thai v1.3 by a0ms1n
// full expansion
// number
#define ศูนย์ 0
#define หนึ่ง 1
#define สอง 2
#define สาม 3
#define สี่ 4
#define ห้า 5
#define หก 6
#define เจ็ค 7
#define เเปด 8
#define เก้า 9
#define คูณหนึ่งพัน *1e3
#define คูณหนึ่งหมื่น *1e4
#define คูณหนึ่งเเสน *1e5
#define คูณหนึ่งล้าน *1e6
#define คูณพันล้าน *1e9
// using, typedef
#define ใช้งาน using
#define นิยามประเภท typedef
#define มาตรฐาน std
#define ขอบเขตชื่อ namespace
// stl pair
#define อันเเรก first
#define อันสอง second
// pbds
#define กำกับต้นไม้ดำเเดง rb_tree
#define ต้นไม้ tree
#define ต้นไม้_ลำดับ_สถิติ_จุดยอด_เปลี่ยนแปลงข้อมูล tree_order_statistics_node_update
#define ฐาน base
#define ไม่ปรากฏประเภท null_type
//type
#define จริง true
#define เท็จ false
// pointer
#define ไม่ปรากฏตัวชี้ nullptr
// io
#define นำเข้า cin
#define ส่งออก cout
#define ผูก tie
#define ฐานไอโอ ios_base
#define เชื่อมต่อกับเอสทีดีไอโอ sync_with_stdio
// variables
#define ตัวอักษร char
#define อักษร char
#define กลุ่มตัวอักษร string
#define กลุ่มอักษร string
#define สตริง string
#define ตัวเลข int
#define ตัวเลขยาว long long
#define ตัวเลขสั้น short
#define ตัวเลขทศนิยม float
#define ตัวเลขทศนิยมยาว double
#define เลข int
#define เลขยาว long long
#define เลขสั้น short
#define เลขทศนิยม float
#define เลขทศนิยมยาว double
#define ทศนิยม float
#define ทศนิยมยาว double
#define บูลีน bool
#define ค่าความจริง bool
#define ไม่มีเครื่องหมาย unsigned
#define มีเครื่องหมาย signed
#define ค่าคงที่ const
#define ค่าคงตัว const
#define โครงสร้าง struct
// conditional
#define ถ้า if
#define หาก if
#define ไม่เช่นนั้น else
#define นอกเหนือจากนั้น else
#define มิฉะนั้น else
#define เลือก switch
#define ถ้าเป็น case
#define โดยทั่วไป default
#define ทั่วไป default
#define เเละ and
#define หรือ or
// loops
#define สำหรับ for
#define ระหว่างที่ while
#define ในขณะที่ while
#define ขณะที่ while
#define ทำ do
#define หยุด break
#define ทำต่อไป continue
// misc
#define หลัก main
#define ส่งกลับ return
#define จบบรรทัด endl
#define ครับ ;
#define ค่ะ ;
#define นะคะ ;
#define โมฆะ void
#define ไม่ส่งกลับ void
// stl container
#define ค่าคู่ pair
#define คู่ pair
#define สิ่งอันดับ tuple
#define อาร์เรย์ array
#define เวกเตอร์ vector
#define เว็กเตอร์ vector
#define แถว queue
#define แถวสองปลาย deque
#define แถวสำคัญ priority_queue
#define เเถวคอย queue
#define เเถวคอยสองปลาย deque
#define เเถวคอยสำคัญ priority_queue
#define รายการส่งต่อ forward_list
#define รายการ list
#define กอง stack
#define เซ็ต set
#define แผนที่ map
#define เซ็ตหลายจำนวน multiset
#define แผนที่หลายจำนวน multimap
#define เซ็ตที่ไม่เรียง unordered_set
#define แผนที่ที่ไม่เรียง unordered_map
#define เซ็ตหลายจำนวนที่ไม่เรียง unordered_multiset
#define แผนที่หลายจำนวนที่ไม่เรียง unordered_multimap
#define เซ็ตไม่เรียง unordered_set
#define แผนที่ไม่เรียง unordered_map
#define เซ็ตหลายจำนวนไม่เรียง unordered_multiset
#define แผนที่หลายจำนวนไม่เรียง unordered_multimap
// container functions
#define ที่ at
#define หน้า front
#define หลัง back
#define ข้อมูล data
#define เริ่ม begin
#define จบ end
#define เริ่มกลับด้าน rbegin
#define จบกลับด้าน rend
#define ว่าง empty
#define ขนาด size
#define ขนาดของ sizeof
#define ลบล้าง clear
#define ล้าง clear
#define ใส่ insert
#define วาง emplace
#define ลบออก erase
#define ลบ erase
#define ดัน push
#define ดันหน้า push_front
#define ดันหลัง push_back
#define วางหลัง emplace_back
#define นำออก pop
#define ลบหน้า pop_front
#define ลบหลัง pop_back
#define สลับ swap
// stl cmath
#define สัมบูรณ์ abs
#define ยกกำลัง pow
#define มากที่สุด max
#define น้อยที่สุด min
#define รากที่สอง sqrt
#define รากที่สาม cbrt
#define ปัดขึ้น ceil
#define ปัดลง floor
#define ปัดเศษ round
// stl algorithm
#define ย้าย move
#define ไอออต้า iota
#define เรียง sort
#define เรียงลำดับ sort
#define เรียงตาม sort
#define เรียงอย่างมั่นคง stable_sort
#define เรียงลำดับอย่างมั่นคง stable_sort
#define เรียงอย่างมั่นคงตาม stable_sort
#define เรียงบางส่วน partial_sort
#define เรียงลำดับบางส่วน partial_sort
#define เรียงบางส่วนตาม partial_sort
#define เรียงแล้วหรือไม่ is_sorted
#define เรียงแล้วหรือยัง is_sorted
#define สลับ swap
#define กลับด้าน reverse
#define คัดลอก copy
#define คัดลอกถ้า copy_if
#define คัดลอกหาก copy_if
#define แทนที่ replace
#define แทนที่ด้วย replace
#define แทนที่ถ้า replace_if
#define แทนที่หาก replace_if
#define แทนที่ด้วยถ้า replace_if
#define แทนที่ด้วยหาก replace_if
#define เอาออก remove
#define เติม fill
#define เติมเต็ม fill
#define หา find
#define ค้นหา find
#define นับ count
#define นับจำนวน count
#define การค้นหาแบบทวิภาค binary_search
// comparator
#define มากกว่า greater
#define น้อยกว่า less
#define เวลาจัดเรียงกระเป๋าที่น้อยที่สุด minimum_bag_rearrangement_time
//#include "../../../../ภาษาไทย_เต็ม.h"
#include "duty_free.h"
#include <bits/stdc++.h>
ใช้งาน ขอบเขตชื่อ มาตรฐาน ครับ
เลข ผู้ปกครอง[(เลขยาว)(2 คูณหนึ่งล้าน + 5)] ครับ
เลข ลำดับ[(เลขยาว)(2 คูณหนึ่งล้าน) + 5] ครับ
เลข นย[(เลขยาว)(2 คูณหนึ่งล้าน) + 5] ครับ
เลข หา(เลข อ){
ถ้า(ผู้ปกครอง[อ] == อ)ส่งกลับ อ ครับ
ส่งกลับ ผู้ปกครอง[อ] = หา(ผู้ปกครอง[อ]) ครับ
}
โมฆะ รวมกลุ่ม(เลข อ, เลข บ){
ถ้า(หา(อ) == หา(บ))ส่งกลับ ค่ะ
ถ้า(อ < บ){
ผู้ปกครอง[หา(บ)] = หา(อ) นะคะ
}
ถ้า(อ > บ){
ผู้ปกครอง[หา(อ)] = หา(บ) นะคะ
}
}
เลข คำตอบ ครับ
เลข น ค่ะ
มีเครื่องหมาย เวลาจัดเรียงกระเป๋าที่น้อยที่สุด(เวกเตอร์<ตัวเลข> อาร์) {
น = อาร์.ขนาด() นะคะ
ไอออต้า(ผู้ปกครอง, ผู้ปกครอง+น+1,ศูนย์) ครับ
ไอออต้า(นย, นย+น+1,-1) ครับ
เติม(ลำดับ,ลำดับ+น+1,-1) ค่ะ
เลข รต = 0 นะคะ
สำหรับ(เลข ไอ = ศูนย์ ครับ ไอ < น ครับ ไอ++){
เลข ย = อาร์[ไอ] ครับ
ถ้า(ลำดับ[หา(ย)] >= รต && นย[หา(ย)] == 0){
คำตอบ++ ค่ะ
รต=ไอ ค่ะ
}
นย[ย] = ย-1;
ลำดับ[หา(ย)] = ไอ;
ถ้า(ย+1<=น เเละ ลำดับ[ย+1]>=รต)รวมกลุ่ม(ย,ย+1);
ถ้า(ย-1>=0 เเละ ลำดับ[ย-1]>=รต)รวมกลุ่ม(ย-1,ย);
}
ส่งกลับ คำตอบ ครับ
}