Tips and Tricks

Revision en2, by Nourhan_Abo-Heba, 2026-02-02 00:30:37

Find the Max Value in a std::map

Since std::map is sorted by keys, not values, you can use std::max_element to find the pair with the largest value:

auto it = max_element(
    m.begin(), m.end(),
    [](const auto &a, const auto &b) {
        return a.second < b.second;
    }
);

cout << "Max value: " << it->second << " (Key: " << it->first << ")" << endl;

Explanation:

  • std::max_element iterates through all pairs.
  • The lambda compares elements based on their second value.
  • The iterator it points to the pair with the maximum value.

Bonus

If you want the maximum key instead, you can write:

auto last = m.rbegin();
cout << last->first << " " << last->second;

Tip: Counting Distinct Elements in All Prefixes

When a problem asks you to count distinct numbers before (or up to) each index, think in terms of prefix processing + frequency tracking.

Idea: Stand at each index i and maintain a frequency array (or map).

If the current element appears for the first time, then the number of distinct elements increases by one.

Store this count as the number of distinct elements in the prefix ending at i.

Implementation Sketch:

map<int, int> freq; vector distinct(n); int cnt = 0;

for (int i = 0; i < n; i++) { freq[x[i]]++; if (freq[x[i]] == 1) { cnt++; // new distinct element } distinct[i] = cnt; // distinct elements up to index i }

If the problem later asks for the sum of distinct counts over all prefixes, simply accumulate:

long long ans = 0; for (int i = 0; i < n; i++) { ans += distinct[i]; }

Why this works: Each element contributes to the distinct count only once, exactly at its first occurrence.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en11 English Nourhan_Abo-Heba 2026-02-06 03:56:06 215
en10 English Nourhan_Abo-Heba 2026-02-05 20:58:56 182
en9 English Nourhan_Abo-Heba 2026-02-04 01:08:10 274
en8 English Nourhan_Abo-Heba 2026-02-02 02:16:25 1714 Reverted to en6
en7 English Nourhan_Abo-Heba 2026-02-02 02:13:08 1714
en6 English Nourhan_Abo-Heba 2026-02-02 02:07:01 568
en5 English Nourhan_Abo-Heba 2026-02-02 02:05:19 1383
en4 English Nourhan_Abo-Heba 2026-02-02 00:39:24 337
en3 English Nourhan_Abo-Heba 2026-02-02 00:38:11 2780
en2 English Nourhan_Abo-Heba 2026-02-02 00:30:37 1056
en1 English Nourhan_Abo-Heba 2025-11-07 15:57:43 784 Initial revision (published)