๐Ÿ”™ Back to Top

Sat Aug 29 21:19:48 JST 2015

C++ STL unique uniq

ๅ•้กŒ

C: ๆ•ฐใ‚’3ใค้ธใถใƒžใƒณ - AtCoder Beginner Contest 028 | AtCoder

่งฃๆณ•

ใ‚ใ‚Šใ†ใ‚‹ๅ’ŒใŒ \(5 \times 4 \times 3\) ้€šใ‚Šใชใฎใงใ€ใใ‚Œใ‚’ๅ…จ้ƒจๅˆ—ๆŒ™

vector<int> xs(5); cin >> xs;
vector<int> s;
rep (i, 5) rep (j, i) rep (k, j) s.push_back(xs[i] + xs[j] + xs[k]);

ใ‚ฝใƒผใƒˆใ—ใฆใ€้‡่ค‡ใ‚’ๅ–ใ‚Š้™คใ„ใฆใ€3็•ช็›ฎใ‚’ๅฎŸ้š›ใซๅ‡บๅŠ›ใ™ใ‚‹.

ๅˆใ‚ใ€ไธ‹ใฎใ‚ˆใ†ใซใ—ใŸ.
std::unique ใจใ„ใ†ใ‚‚ใฎใฎๅญ˜ๅœจใŒ็Ÿฅใ‚‰ใชใ‹ใฃใŸใฎใงใ€่ปฝใใ‚ฐใ‚ฐใฃใŸ.
sort ใ—ใฆใ‹ใ‚‰ไฝฟใ†ใ‚‚ใฎใฎใ‚ˆใ†ใชใฎใง (Unix ใฎ uniq ใ‚ณใƒžใƒณใƒ‰ใจๅŒใ˜ใ ):

sort(begin(xs), end(xs));
unique(begin(xs), end(xs));
reverse(begin(xs), end(xs));
cout << xs[2] << endl;

ใชใ‚“ใ‹ใƒใ‚ฐใฃใŸ (Submission #479383).

ใจใ„ใ†ใ‚ใ‘ใงใ€ใ‚‚ใ†ใกใ‚‡ใฃใจ่ฉณใ—ใ่ชฟในใ‚‹ใ“ใจใซใ™ใ‚‹. (่ปฝใ่ชฟในใ‚‹ใ€ใจใฏใ€ใ‚ฐใ‚ฐใฃใŸๆคœ็ดข็ตๆžœใƒšใƒผใ‚ธใ‚’่ฆ‹ใ‚‹ใ“ใจใงใ‚ใฃใฆใ€ใ•ใ‚‰ใซ่ฉฒๅฝ“ใฎใƒšใƒผใ‚ธใ‚’่ชญใ‚€ใ“ใจใงใฏใชใ„).

ใ€Œๆœซๅฐพใซใ‚ดใƒŸใŒๆฎ‹ใ‚‹ใ€็Šถๆ…‹ใ‹ใ‚‰ reverse ใ—ใŸใฎใ ใ‹ใ‚‰ใ€ ใ‚ดใƒŸใ‚’่ฆ‹ใฆๅ›ž็ญ”ใ—ใฆใŸใ“ใจใซใชใ‚‹.

ใใฎใƒšใƒผใ‚ธใซใ‚ใ‚‹ใ‚ˆใ†ใซใ€erase ใ—ใŸใจใ“ใ‚ๆญฃ็ญ” (Submission #479557)

ใ—ใ‹ใ—ใชใ‚‰ใฐใ€reverse ใ—ใฆใ‹ใ‚‰ unique ใ™ใ‚Œใฐใ‚ˆใ‹ใฃใŸใ‚ใ‘ใ  (check Submission #480275).

่ฟฝ่จ˜

ใ‚ˆใ่€ƒใˆใ‚‹ใจใ€ๅ…ฅๅŠ›ใฏ็›ธ็•ฐใชใ‚‹5ใคใงใ‚ใฃใŸใฎใงใ€ ๅ’Œใ‚’้‡่ค‡ใ›ใšใซๆฑ‚ใ‚ใฆใ‚Œใฐใ€unique ใจใ‹่ฆใ‚‰ใชใ‹ใฃใŸ.

ใ‚ใจใ€ๅ…จๅˆ—ๆŒ™ใ™ใ‚‹ใพใงใ‚‚ใชใใ€ไธ‰็•ช็›ฎใฎๅ’Œใฏ้ซ˜ใ€…ไบŒ้€šใ‚Šใ ใฃใŸ:

\(A<B<C<D<E\)ใซใคใ„ใฆ

Bash

sed 's/.*/&\n&/' |
awk 'NR==1{print $2+$3+$5} NR==2{print $1+$4+$5}' |
sort -n | tail -1