Learn C++ STL

lesson ā§Š / ⧝ ¡ vector: āϝ⧇ container-āϟāĻž āϏāĻŦāĻžāϰ āφāϗ⧇ āĻšāĻžāϤ⧇ āφāϏ⧇

Module ⧍ ¡ vector: āϝ⧇ container-āϟāĻž āϏāĻŦāĻžāϰ āφāϗ⧇ āĻšāĻžāϤ⧇ āφāϏ⧇

āĻĒ⧁āϰ⧋ program: āĻĒāĻžāρāϚ āϞāĻžāχāύ āĻĨ⧇āϕ⧇ āϏāĻ¤ā§āϝāĻŋāĻ•āĻžāϰ⧇āϰ āĻāĻ•āϟāĻž tool āĻĒāĻ°ā§āϝāĻ¨ā§āϤ

FreeāĻĒāĻĄāĻŧāĻž

āĻāχ lesson-āĻ āϝāĻž āĻļāĻŋāĻ–āĻŦ⧇

  • āĻ›āϝāĻŧāϟāĻž āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ vector program āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āĻāĻ•āϟāĻž āϤāĻžāϞāĻŋāĻ•āĻž āĻĒāĻĄāĻŧ⧇ print āĻ•āϰāĻž āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ histogram-āϏāĻš āĻāĻ•āϟāĻž marks report āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤
  • vector<vector<int>> āĻĻāĻŋāϝāĻŧ⧇ grid āĻŦāĻžāύāĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āφāϝāĻŧāϤāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āϰ āĻŽāϤ⧋ āϏāĻŽāĻžāύ āϏāĻžāϰāĻŋ āĻĻāĻŋāϝāĻŧ⧇āĻ“, āφāĻŦāĻžāϰ āφāϞāĻžāĻĻāĻž āφāϞāĻžāĻĻāĻž āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ āϏāĻžāϰāĻŋ āĻĻāĻŋāϝāĻŧ⧇āĻ“āĨ¤
  • āĻāĻ•āϟāĻž prefix-sum vector āĻĻāĻŋāϝāĻŧ⧇ range-āĻāϰ āϝ⧋āĻ—āĻĢāϞ⧇āϰ āĻ…āύ⧇āĻ• āĻĒā§āϰāĻļā§āύ⧇āϰ āωāĻ¤ā§āϤāϰ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āĻĒā§āϰāϤāĻŋāϟāĻž O(1)-āĻ, āĻāχ track-āĻāϰ āĻĒā§āϰāĻĨāĻŽ contest-āĻāϰ āϧāĻžāϰāĻŖāĻžāĨ¤

C track-āĻāϰ Module 9-āĻ āϤ⧁āĻŽāĻŋ fixed array āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻž marks report āϞāĻŋāϖ⧇āĻ›āĻŋāϞ⧇āĨ¤ āϤāĻžāϤ⧇ āĻ›āĻŋāϞ #define MAX_S 100, āĻĒā§āϰāϤāĻŋāϟāĻž array-āĻāϰ āĻĒāĻžāĻļ⧇ āĻāĻ•āϟāĻž count variable, āφāϰ 101 āύāĻŽā§āĻŦāϰ āĻ›āĻžāĻ¤ā§āϰāϕ⧇ āĻ“āϟāĻž āĻĸ⧁āĻ•āϤ⧇āχ āĻĻāĻŋāϤ āύāĻžāĨ¤ āĻāχ lesson āĻāĻ•āχ report āφāĻŦāĻžāϰ āϞ⧇āϖ⧇, āĻāĻŦāĻžāϰ vector āĻĻāĻŋāϝāĻŧ⧇, size-āĻāϰ āϕ⧋āύ⧋ āϏ⧀āĻŽāĻž āĻ›āĻžāĻĄāĻŧāĻžāĨ¤ āĻ›āϝāĻŧāϟāĻž program āϧāĻžāĻĒ⧇ āϧāĻžāĻĒ⧇ āϏ⧇āĻ–āĻžāύ⧇ āĻĒ⧌āρāĻ›āĻžāϝāĻŧ, āĻĒā§āϰāϤāĻŋāϟāĻž āφāϗ⧇āϰāϟāĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻāĻ•āϟ⧁ āĻŦāĻĄāĻŧ, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻž āĻāĻ•āϟāĻž āĻ•āϰ⧇ āύāϤ⧁āύ āϜāĻŋāύāĻŋāϏ āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž program-āĻāϰ āωāĻĒāϰ⧇āϰ "āύāϤ⧁āύ āϜāĻŋāύāĻŋāϏ" āϞāĻžāχāύāϟāĻž āφāϗ⧇ āĻĒāĻĄāĻŧā§‹; program-āϟāĻž āĻ āĻŋāĻ• āĻ“āϟāĻžāϰ āϜāĻ¨ā§āϝāχāĨ¤

Program 1: n-āϟāĻž āĻŽāĻžāύ āĻĒāĻĄāĻŧā§‹, āφāĻŦāĻžāϰ print āĻ•āϰ⧋

āύāϤ⧁āύ āϜāĻŋāύāĻŋāϏ: for (int& x : a) cin >> x; āϏāϰāĻžāϏāϰāĻŋ element-āϗ⧁āϞ⧋āϰ āĻ­āĻŋāϤāϰ⧇ āĻĒāĻĄāĻŧ⧇, āφāϰ āĻāĻŽāύ āĻāĻ•āϟāĻž separator, āϝ⧇āϟāĻž āϞāĻžāχāύ⧇āϰ āĻļ⧇āώ⧇ āĻ•āĻ–āύ⧋ āĻŦāĻžāĻĄāĻŧāϤāĻŋ space āϰāĻžāϖ⧇ āύāĻžāĨ¤

āĻĒā§āϰāĻžāϝāĻŧ āϏāĻŦ contest input āĻļ⧁āϰ⧁ āĻšāϝāĻŧ n āĻĻāĻŋāϝāĻŧ⧇, āϤāĻžāϰāĻĒāϰ n-āϟāĻž āĻŽāĻžāύāĨ¤ Vector-āĻāϰ size n āĻ•āϰ⧇ āύāĻžāĻ“, āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻž reference āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž element-āĻ āĻĒāĻĄāĻŧā§‹, āĻŽāĻžāύ⧇ Module 1-āĻāϰ āϏ⧇āχ āĻŦāĻžāĻ•ā§āϏ⧇āϰ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āύāĻžāĻŽāĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> a(n);
    for (int& x : a) {
        cin >> x;
    }

    for (int i = 0; i < n; i++) {
        cout << a[i] << (i + 1 < n ? ' ' : '\n');
    }
    return 0;
}
12 7 30 7 5

āĻ“āχ output-āϟāĻž input 5 āφāϰ 12 7 30 7 5-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž element-āĻāϰ āĻĒāϰ⧇ āĻāĻ•āϟāĻž space āĻŦāϏ⧇, āĻļ⧁āϧ⧁ āĻļ⧇āώāϟāĻž āĻŦāĻžāĻĻ⧇, āĻ“āϰ āĻĒāϰ⧇ āĻŦāϏ⧇ newlineāĨ¤ int& x-āĻāϰ āĻŦāĻĻāϞ⧇ int x āϞāĻŋāĻ–āϞ⧇ loop āĻĒāĻĄāĻŧāϤ copy-āϗ⧁āϞ⧋āϤ⧇, āφāϰ vector-āϟāĻž āĻĒ⧁āϰ⧋āϟāĻžāχ 0 āĻĨ⧇āϕ⧇ āϝ⧇āϤāĨ¤ āϤāĻžāχ āĻĒāĻĄāĻŧāĻžāϰ loop-āϟāĻž āĻ•āĻžāϜ āĻ•āϰ⧇ int&-āĻāϰ āĻœā§‹āϰ⧇āχāĨ¤

Program 2: āϚāϞāϤāĻŋ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻŽāĻžāύ āφāϰ āϤāĻžāϰ index

āύāϤ⧁āύ āϜāĻŋāύāĻŋāϏ: āĻšāĻžāρāϟāϤ⧇ āĻšāĻžāρāϟāϤ⧇ āĻāĻ•āϏāĻžāĻĨ⧇ āĻĻ⧁āχāϟāĻž āϜāĻŋāύāĻŋāϏ āĻŽāύ⧇ āϰāĻžāĻ–āĻž: āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āĻŽāĻžāύāϟāĻž, āφāϰ āϏ⧇āϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻ›āĻŋāϞāĨ¤

Alice āϏāĻĒā§āϤāĻžāĻšā§‡āϰ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ⧇āϰ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻž āϞāĻŋāϖ⧇ āϰāĻžāϖ⧇āĨ¤ āĻ“ āϚāĻžāϝāĻŧ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ—āϰāĻŽ āĻĻāĻŋāύāϟāĻž āφāϰ āϤāĻžāϰ indexāĨ¤ āĻĻ⧁āχ āĻĻāĻŋāύ āϏāĻŽāĻžāύ āĻšāϞ⧇ āĻ“ āϚāĻžāϝāĻŧ āĻĒā§āϰāĻĨāĻŽāϟāĻžāĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> temps(n);
    for (int& t : temps) {
        cin >> t;
    }

    int best = 0;
    for (int i = 1; i < n; i++) {
        if (temps[i] > temps[best]) {
            best = i;
        }
    }
    cout << "hottest " << temps[best] << " on day index " << best << '\n';
    return 0;
}
hottest 23 on day index 1

āĻ“āχ output-āϟāĻž input 7 āφāϰ 18 23 21 23 19 17 20-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āĻļ⧁āϧ⧁ index āϰāĻžāĻ–āϞ⧇āχ āϚāϞ⧇, āĻ•āĻžāϰāĻŖ temps[best] āĻŽāĻžāύāϟāĻž āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤ Test-āϟāĻž >, >= āύāĻž, āϤāĻžāχ āĻĒāϰ⧇āϰ āϕ⧋āύ⧋ 23 āĻĒā§āϰāĻĨāĻŽāϟāĻžāϰ āϜāĻžāϝāĻŧāĻ—āĻž āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤ 0 āĻĄāĻŋāĻ—ā§āϰāĻŋ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āύāĻž āĻ•āϰ⧇ index 0 āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϝāĻŧ, āĻĒ⧁āϰ⧋ āϏāĻĒā§āϤāĻžāĻš āĻļā§‚āĻ¨ā§āϝ⧇āϰ āύāĻŋāĻšā§‡ āĻĨāĻžāĻ•āϞ⧇āĻ“ program āĻ āĻŋāĻ• āϚāϞ⧇āĨ¤

Program 3: āĻāĻ•āϟāĻž frequency table

āύāϤ⧁āύ āϜāĻŋāύāĻŋāϏ: vector<int> count(k, 0), āĻāĻŽāύ āĻāĻ•āϟāĻž vector, āϝāĻžāϰ index āĻšāϞ⧋ āĻāĻ•āϟāĻž āĻŽāĻžāύ, āφāϰ element āĻšāϞ⧋ āϏ⧇āχ āĻŽāĻžāύ āĻ•āϤāĻŦāĻžāϰ āĻāϏ⧇āϛ⧇āĨ¤

David āĻāĻ•āϟāĻž āĻ›āĻ•ā§āĻ•āĻž āĻĻāĻļāĻŦāĻžāϰ āϚāĻžāϞ⧇, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž āĻ•āϤāĻŦāĻžāϰ āĻĒāĻĄāĻŧāϞ āĻ—ā§‹āύ⧇āĨ¤ āĻ›āĻ•ā§āĻ•āĻžāϰ āϏāĻ‚āĻ–ā§āϝāĻž 1 āĻĨ⧇āϕ⧇ 6, āϤāĻžāχ vector-āĻ index āϞāĻžāĻ—āĻŦ⧇ 6 āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, āĻŽāĻžāύ⧇ 7āϟāĻž elementāĨ¤ Index 0 āĻ•āĻ–āύ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϝāĻŧ āύāĻž, āϤāĻžāϤ⧇ āϕ⧋āύ⧋ āϏāĻŽāĻ¸ā§āϝāĻž āύ⧇āχāĨ¤

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> count(7, 0);
    for (int i = 0; i < n; i++) {
        int face;
        cin >> face;
        count[face]++;
    }

    for (int face = 1; face <= 6; face++) {
        cout << face << ": " << string(count[face], '*') << (count[face] > 0 ? " " : "") << count[face] << '\n';
    }
    return 0;
}
1: ** 2
2: * 1
3: **** 4
4: 0
5: * 1
6: ** 2

āĻ“āχ output-āϟāĻž input 10 āφāϰ 3 6 1 3 3 5 6 2 3 1-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ string(k, '*') āĻŦāĻžāύāĻžāϝāĻŧ k-āϟāĻž āϤāĻžāϰāĻžāϰ āĻāĻ•āϟāĻž āϏāĻžāϰāĻŋ, āĻŽāĻžāύ⧇ āĻāĻ• āϞāĻžāχāύ⧇āϰ āĻāĻ•āϟāĻž histogramāĨ¤ āĻŽāĻžāύāϟāĻž āύāĻŋāĻœā§‡āχ index, āϤāĻžāχ āĻĒā§āϰāϤāĻŋāϟāĻž āϚāĻžāϞ⧇āϰ āĻ–āϰāϚ āĻāĻ• āϧāĻžāĻĒ, āĻ•āĻŋāϛ⧁ āϖ⧁āρāϜāϤ⧇ āĻšāϝāĻŧ āύāĻžāĨ¤ 7 āĻĒāĻĄāĻŧāϞ⧇ āϞ⧇āĻ–āĻž āĻšāϤ⧋ āĻļ⧇āώ⧇āϰ āĻŦāĻžāχāϰ⧇, āϤāĻžāχ āφāϏāϞ input-āĻ āφāϗ⧇ range check āĻ•āϰ⧇ āύāĻžāĻ“, C track-āĻāϰ count array-āϗ⧁āϞ⧋āϤ⧇ āϝ⧇āĻŽāύ āĻ•āϰāϤ⧇āĨ¤

Program 4: vector-āĻāϰ vector āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻž grid

āύāϤ⧁āύ āϜāĻŋāύāĻŋāϏ: vector<vector<int>> g(r, vector<int>(c)), āĻŽāĻžāύ⧇ c-āϟāĻž 0-āĻāϰ r-āϟāĻž āϏāĻžāϰāĻŋ, āĻĒāĻĄāĻŧāĻž āφāϰ āĻ•āϞāĻžāĻŽ āĻŽāĻŋāϞāĻŋāϝāĻŧ⧇ print āĻ•āϰāĻžāĨ¤

Maria-āϰ āĻĻā§‹āĻ•āĻžāύ⧇ r-āϟāĻž āϤāĻžāĻ•, āĻĒā§āϰāϤāĻŋāϟāĻžāϝāĻŧ c-āϟāĻž āĻ–ā§‹āĻĒ, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻž āĻ–ā§‹āĻĒ⧇ āĻ•āϝāĻŧāϟāĻž āϜāĻŋāύāĻŋāϏ āφāϛ⧇ āϤāĻžāϰ āĻšāĻŋāϏāĻžāĻŦāĨ¤ āĻŦāĻžāχāϰ⧇āϰ vector āϏāĻžāϰāĻŋāϗ⧁āϞ⧋ āϧāϰ⧇ āϰāĻžāϖ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻžāϰāĻŋ āύāĻŋāĻœā§‡āχ āĻāĻ•āϟāĻž vector<int>, āϤāĻžāχ g[i][j] āĻšāϞ⧋ āϏāĻžāϰāĻŋ i, āĻ•āϞāĻžāĻŽ j, āĻ āĻŋāĻ• C-āĻāϰ grid-āĻāϰ āĻŽāϤ⧋āĨ¤

#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int r, c;
    cin >> r >> c;
    vector<vector<int>> g(r, vector<int>(c));
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++) {
            cin >> g[i][j];
        }
    }

    for (const vector<int>& row : g) {
        for (int x : row) {
            cout << setw(5) << x;
        }
        cout << '\n';
    }
    return 0;
}
    4   12    0
  150    7   33
    9    9 1000

āĻ“āχ output-āϟāĻž input 3 3, āϤāĻžāϰāĻĒāϰ 4 12 0, 150 7 33 āφāϰ 9 9 1000-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ <iomanip>-āĻāϰ setw(5) āĻĒāϰ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻž āĻĒāĻžāρāϚ āϘāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĄāĻžāύ āĻĻāĻŋāĻ• āĻ˜ā§‡āρāώ⧇ print āĻ•āϰ⧇, āϤāĻžāχ āĻ•āϞāĻžāĻŽāϗ⧁āϞ⧋ āϞāĻžāχāύ⧇ āϞāĻžāχāύ⧇ āĻŽāĻŋāϞ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻŦāĻžāχāϰ⧇āϰ range-for āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻžāϰāĻŋ āύ⧇āϝāĻŧ const& āĻĻāĻŋāϝāĻŧ⧇, āϤāĻžāχ āϕ⧋āύ⧋ āϏāĻžāϰāĻŋ copy āĻšāϝāĻŧ āύāĻžāĨ¤

C array-āĻāϰ āϏāĻŦ āϏāĻžāϰāĻŋ āϏāĻŽāĻžāύ āϞāĻŽā§āĻŦāĻžāĨ¤ Vector-āĻāϰ āϏāĻžāϰāĻŋāϗ⧁āϞ⧋āϕ⧇ āϏāĻŽāĻžāύ āĻšāϤ⧇āχ āĻšāĻŦ⧇, āĻāĻŽāύ āϕ⧋āύ⧋ āĻ•āĻĨāĻž āύ⧇āχāĨ¤ āĻāĻ–āĻžāύ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻžāϰāĻŋ āĻŦāĻžāύāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ push_back āĻĻāĻŋāϝāĻŧ⧇, āφāϰ āϏāĻžāϰāĻŋ i āĻĒāĻžāϝāĻŧ i + 1āϟāĻž seat, āϛ⧋āϟ āĻāĻ•āϟāĻž theatre-āĻāϰ āĻŽāϤ⧋, āϝ⧇āĻ–āĻžāύ⧇ āĻĒ⧇āĻ›āύ⧇āϰ āĻĻāĻŋāϕ⧇ āϏāĻžāϰāĻŋ āϚāĻ“āĻĄāĻŧāĻž āĻšāϤ⧇ āĻĨāĻžāϕ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<vector<int>> seats;
    int number = 1;
    for (int row = 0; row < 4; row++) {
        vector<int> this_row;
        for (int k = 0; k <= row; k++) {
            this_row.push_back(number++);
        }
        seats.push_back(this_row);
    }

    for (size_t i = 0; i < seats.size(); i++) {
        cout << "row " << i << " (" << seats[i].size() << " seats):";
        for (int s : seats[i]) {
            cout << ' ' << s;
        }
        cout << '\n';
    }
    return 0;
}
row 0 (1 seats): 1
row 1 (2 seats): 2 3
row 2 (3 seats): 4 5 6
row 3 (4 seats): 7 8 9 10

āĻāĻŽāύ āφāĻ•āĻžāϰāϕ⧇ āĻŦāϞ⧇ ragged, āĻŦāĻž jaggedāĨ¤ Graph-āĻāϰ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻļā§€āĻĻ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻž, āĻŽāĻžāύ⧇ Module 16-āĻāϰ adjacency list, āĻ āĻŋāĻ• āĻāχ āφāĻ•āĻžāϰ⧇āϰ: āĻĒā§āϰāϤāĻŋāϟāĻž node-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ• āϏāĻžāϰāĻŋ, āϝ⧇āϟāĻž āĻ“āχ node-āĻāϰ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻļā§€āϰ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āϏāĻŽāĻžāύ āϞāĻŽā§āĻŦāĻžāĨ¤ Program āϝāĻž āĻŦāĻžāύāĻžāϞ, āĻ›āĻŦāĻŋāϤ⧇ āϏ⧇āϟāĻžāχ āĻĻ⧇āĻ–ā§‹āĨ¤

vector<vector<int>> seats: handle-āĻāϰ āĻāĻ•āϟāĻž āĻŦāĻžāχāϰ⧇āϰ vector, āĻĒā§āϰāϤāĻŋāϟāĻž handle āĻĻ⧇āĻ–āĻžāϝāĻŧ āύāĻŋāĻœā§‡āϰ āϏāĻžāϰāĻŋ seats: āĻāĻ•āϟāĻž āĻŦāĻžāχāϰ⧇āϰ vector, āϚāĻžāϰāϟāĻž āϏāĻžāϰāĻŋ, āϚāĻžāϰāϟāĻž āφāϞāĻžāĻĻāĻž block āĻŦāĻžāχāϰ⧇āϰ vector (4āϟāĻž handle) āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻžāϰāĻŋāϰ āύāĻŋāĻœā§‡āϰ block, memory-āϰ āϕ⧋āĻĨāĻžāĻ“ seats[0]: size 1 seats[1]: size 2 seats[2]: size 3 seats[3]: size 4 1 2 3 4 5 6 7 8 9 10 āĻāĻ•āϟāĻž āϏāĻžāϰāĻŋāϰ āĻ­āĻŋāϤāϰ⧇ āĻŦāĻžāĻ•ā§āϏāϗ⧁āϞ⧋ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻŦāϏ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāĻžāϰāĻŋāϗ⧁āϞ⧋ āύāĻŋāĻœā§‡āϰāĻž āϝ⧇āϕ⧋āύ⧋ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϤāĻžāχ g[i] āĻāĻ•āϟāĻž āĻĒ⧁āϰ⧋ vector, āφāϰ g[i].size() āĻšāϞ⧋ āĻļ⧁āϧ⧁ āĻ“āχ āϏāĻžāϰāĻŋāϟāĻžāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝāĨ¤

Program 5: prefix sum āĻĻāĻŋāϝāĻŧ⧇ range-āĻāϰ āĻĒā§āϰāĻļā§āύ⧇āϰ āωāĻ¤ā§āϤāϰ

āύāϤ⧁āύ āϜāĻŋāύāĻŋāϏ: āϚāϞāϤāĻŋ āϝ⧋āĻ—āĻĢāϞ⧇āϰ āĻāĻ•āϟāĻž vector, āϝ⧇āϟāĻž āĻāĻ•āĻŦāĻžāϰ O(n)-āĻ āĻŦāĻžāύāĻžāύ⧋ āĻšāϝāĻŧ, āϤāĻžāϰāĻĒāϰ āϝ⧇āϕ⧋āύ⧋ "l āĻĨ⧇āϕ⧇ r āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϝ⧋āĻ—āĻĢāϞ"-āĻāϰ āωāĻ¤ā§āϤāϰ āĻĻ⧇āϝāĻŧ O(1)-āĻāĨ¤

Kenji-āϰ game āĻĒā§āϰāϤāĻŋ round-āĻāϰ point āϞāĻŋāϖ⧇ āϰāĻžāϖ⧇āĨ¤ Player-āϰāĻž āĻŦāĻžāϰāĻŦāĻžāϰ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇, round l āĻĨ⧇āϕ⧇ r-āĻ āĻŽā§‹āϟ āĻ•āϤ point āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āύāϤ⧁āύ āĻ•āϰ⧇ āϝ⧋āĻ— āĻ•āϰāϞ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āĻĒā§āϰāĻļā§āύ⧇ n āϧāĻžāĻĒ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϞāĻžāϗ⧇āĨ¤ āϤāĻžāϰ āĻŦāĻĻāϞ⧇ āĻŦāĻžāύāĻžāĻ“ prefix, āϝ⧇āĻ–āĻžāύ⧇ prefix[k] āĻšāϞ⧋ āĻĒā§āϰāĻĨāĻŽ k-āϟāĻž round-āĻāϰ āĻŽā§‹āϟāĨ¤ āĻāϰ element n + 1āϟāĻž, āφāϰ prefix[0] āĻšāϞ⧋ 0āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> points{4, -2, 7, 1, 3};
    int n = points.size();

    vector<long long> prefix(n + 1, 0);
    for (int i = 0; i < n; i++) {
        prefix[i + 1] = prefix[i] + points[i];
    }

    cout << "prefix:";
    for (long long p : prefix) {
        cout << ' ' << p;
    }
    cout << '\n';

    // rounds counted from 1: the sum of rounds l..r is prefix[r] - prefix[l - 1]
    int questions[3][2] = {{1, 3}, {2, 5}, {4, 4}};
    for (auto& q : questions) {
        int l = q[0], r = q[1];
        cout << "rounds " << l << " to " << r << ": " << prefix[r] - prefix[l - 1] << '\n';
    }
    return 0;
}
prefix: 0 4 2 9 10 13
rounds 1 to 3: 9
rounds 2 to 5: 9
rounds 4 to 4: 1

Round 2 āĻĨ⧇āϕ⧇ 5 āĻŽāĻžāύ⧇ 5 āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻŦ round, āϤāĻž āĻĨ⧇āϕ⧇ āĻŦāĻžāĻĻ 1 āĻĒāĻ°ā§āϝāĻ¨ā§āϤ round-āϗ⧁āϞ⧋: 13 - 4 = 9āĨ¤ āϏāĻžāĻŽāύ⧇āϰ āĻŦāĻžāĻĄāĻŧāϤāĻŋ element-āϟāĻžāϰ āϜāĻ¨ā§āϝāχ l = 1 āύāĻŋāϰāĻžāĻĒāĻĻ: prefix[l - 1] āĻšāϝāĻŧ prefix[0], āϝ⧇āϟāĻž 0, āĻ•āĻ–āύ⧋ prefix[-1] āύāĻžāĨ¤ āϝ⧋āĻ—āĻĢāϞāϗ⧁āϞ⧋ long long, āĻ•āĻžāϰāĻŖ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āĻŦāĻĄāĻŧ āĻŽāĻžāύ āϝ⧋āĻ— āĻ•āϰāϞ⧇ āĻāĻ•āϟāĻž int overflow āĻ•āϰ⧇āĨ¤

āĻ–āϰāϚ āĻāĻ•āĻŦāĻžāϰ O(n), āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāϤāĻŋ āĻĒā§āϰāĻļā§āύ⧇ O(1)āĨ¤ n = q = 200,000 āĻšāϞ⧇ āϏ⧇āϟāĻž āĻĒā§āϰāĻžāϝāĻŧ 400,000 āϧāĻžāĻĒ, āĻ…āĻĨāϚ āύāχāϞ⧇ āϞāĻžāĻ—āϤ 4,000 āϕ⧋āϟāĻŋ āϧāĻžāĻĒ āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤ āϤāĻžāχ prefix sum āĻāĻ•āĻŦāĻžāϰ⧇āϰ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋāϰ āĻŦāĻĻāϞ⧇ āĻĻ⧇āϝāĻŧ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āωāĻ¤ā§āϤāϰ, āφāϰ āĻāχ track-āĻ āĻāϟāĻžāχ āĻĒā§āϰāĻĨāĻŽ āϧāĻžāϰāĻŖāĻž, āϝ⧇āϟāĻž contest āϏāĻ¤ā§āϝāĻŋāχ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇āĨ¤

Program 6: marks reportIntermediate

āύāϤ⧁āύ āϜāĻŋāύāĻŋāϏ: pair-āĻāϰ āĻāĻ•āϟāĻž vector, āϝāĻžāϰ āĻĒā§āϰāϤāĻŋāϟāĻž pair-āĻ āĻāĻ•āϟāĻž āύāĻžāĻŽ āφāϰ āĻ“āχ āĻ›āĻžāĻ¤ā§āϰ⧇āϰ āύāĻŋāĻœā§‡āϰ marks-āĻāϰ vector, āϕ⧋āĻĨāĻžāĻ“ āϕ⧋āύ⧋ āϏ⧀āĻŽāĻž āĻ›āĻžāĻĄāĻŧāĻžāĨ¤

Input-āĻāϰ āĻĒā§āϰāϤāĻŋāϟāĻž āϞāĻžāχāύ⧇ āĻāĻ•āϟāĻž āύāĻžāĻŽ, āϤāĻžāϰāĻĒāϰ āĻ“āχ āĻ›āĻžāĻ¤ā§āϰ⧇āϰ āύāĻŽā§āĻŦāϰāϗ⧁āϞ⧋, āĻļ⧇āώ⧇ -1, āĻ•āĻžāϰāĻŖ āϏāĻŦāĻžāχ āϏāĻŽāĻžāύ āϏāĻ‚āĻ–ā§āϝāĻ• āĻĒāϰ⧀āĻ•ā§āώāĻž āĻĻ⧇āϝāĻŧāύāĻŋāĨ¤ Report print āĻ•āϰ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āĻ›āĻžāĻ¤ā§āϰ⧇āϰ āĻ—āĻĄāĻŧ, āĻ•ā§āϞāĻžāϏ⧇āϰ āϏ⧇āϰāĻž āϜāύ, āφāϰ āĻ—āĻĄāĻŧ⧇āϰ band āϧāϰ⧇ āĻāĻ•āϟāĻž histogramāĨ¤ left, right, fixed āφāϰ setprecision(1) āφāϏ⧇ <iomanip> āĻĨ⧇āϕ⧇: alignment, āφāϰ āĻĻāĻļāĻŽāĻŋāϕ⧇āϰ āĻĒāϰ⧇ āĻāĻ•āϟāĻž āĻ…āĻ™ā§āĻ•āĨ¤

#include <iomanip>
#include <iostream>
#include <string>
#include <utility>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    // Each line: a name, then that student's marks, ended by -1.
    vector<pair<string, vector<int>>> students;
    string name;
    while (cin >> name) {
        vector<int> marks;
        int m;
        while (cin >> m && m != -1) {
            marks.push_back(m);
        }
        students.push_back({name, marks});
    }

    const vector<string> band_name{"90+", "80-89", "70-79", "60-69", "below 60"};
    vector<int> band_count(band_name.size(), 0);
    string best_name;
    double best_avg = -1;

    cout << fixed << setprecision(1);
    for (const auto& [who, marks] : students) {
        int total = 0;
        for (int m : marks) {
            total += m;
        }
        double avg = marks.empty() ? 0.0 : (double)total / marks.size();
        cout << left << setw(8) << who << right << setw(3) << marks.size()
             << " marks, average " << setw(5) << avg << '\n';

        int band = avg >= 90 ? 0 : avg >= 80 ? 1 : avg >= 70 ? 2 : avg >= 60 ? 3 : 4;
        band_count[band]++;
        if (avg > best_avg) {
            best_avg = avg;
            best_name = who;
        }
    }

    cout << "best: " << best_name << " (" << best_avg << ")\n";
    for (size_t b = 0; b < band_name.size(); b++) {
        int k = band_count[b];
        cout << setw(8) << band_name[b] << " | " << string(k, '#') << (k > 0 ? " " : "") << k << '\n';
    }
    return 0;
}
Alice     3 marks, average  85.0
Bob       4 marks, average  58.5
Maria     3 marks, average  90.7
Zara      2 marks, average  69.5
Kenji     4 marks, average  80.5
Amara     3 marks, average  94.7
David     2 marks, average  60.5
best: Amara (94.7)
     90+ | ## 2
   80-89 | ## 2
   70-79 | 0
   60-69 | ## 2
below 60 | # 1

āĻ“āχ output-āϟāĻž āĻāχ āϏāĻžāϤāϟāĻž input āϞāĻžāχāύ⧇āϰ āϜāĻ¨ā§āϝ: Alice 78 85 92 -1, Bob 55 61 48 70 -1, Maria 90 94 88 -1, Zara 67 72 -1, Kenji 81 79 85 77 -1, Amara 95 91 98 -1 āφāϰ David 58 63 -1āĨ¤

const auto& [who, marks] āĻšāϞ⧋ Module 1-āĻāϰ structured binding: copy āύāĻž āĻ•āϰ⧇āχ pair-āĻāϰ āĻĻ⧁āχ āĻ…āĻ°ā§āϧ⧇āĻ•āϕ⧇ āύāĻžāĻŽ āĻĻ⧇āϝāĻŧāĨ¤ āĻāĻ–āĻžāύ⧇ āϤāĻŋāύ āϰāĻ•āĻŽ type-āĻāϰ āϤāĻŋāύāϟāĻž vector āĻāĻ•āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāϛ⧇, āφāϰ āϕ⧋āύ⧋āϟāĻžāϰāχ size-āĻāϰ āϏ⧀āĻŽāĻž āύ⧇āχāĨ¤ 101 āύāĻŽā§āĻŦāϰ āĻ›āĻžāĻ¤ā§āϰ, āĻŦāĻž 100,001 āύāĻŽā§āĻŦāϰ, āĻŽāĻžāύ⧇ āĻļ⧁āϧ⧁ āφāϰ⧇āĻ•āϟāĻž push_backāĨ¤

Example 1: āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āϏ⧁āϝ⧋āĻ—, āĻāĻ•āϟāĻž vector āĻĨ⧇āϕ⧇ āĻ­āϰāĻž āφāϰ⧇āĻ•āϟāĻž vector

50-āĻāϰ āύāĻŋāĻšā§‡ āĻĒāĻžāĻ“āϝāĻŧāĻž āĻĒā§āϰāϤāĻŋāϟāĻž āĻ›āĻžāĻ¤ā§āϰāϕ⧇ Zara āφāĻŦāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϏ⧁āϝ⧋āĻ— āĻĻ⧇āϝāĻŧāĨ¤ āĻ“ āĻĒā§āϰāĻĨāĻŽ vector āĻĨ⧇āϕ⧇ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻāĻ•āϟāĻž āĻŦāĻžāύāĻžāϝāĻŧ, āϝ⧇āϟāĻžāϝāĻŧ āĻĨāĻžāϕ⧇ āĻļ⧁āϧ⧁ āϝāĻžāĻĻ⧇āϰ retake āϞāĻžāĻ—āĻŦ⧇ āϤāĻžāĻĻ⧇āϰ indexāĨ¤ āĻ•āĻžāϰāĻ“ retake āύāĻž āϞāĻžāĻ—āĻžāϟāĻžāĻ“ āĻāĻ•āϟāĻž āφāϏāϞ āωāĻ¤ā§āϤāϰ, āϤāĻžāχ āĻ“āϟāĻžāϰ āϜāĻ¨ā§āϝāĻ“ āφāϞāĻžāĻĻāĻž āϞāĻžāχāύ āφāϛ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> marks{72, 45, 90, 38, 66, 49};
    vector<int> retake;
    for (size_t i = 0; i < marks.size(); i++) {
        if (marks[i] < 50) {
            retake.push_back(i);
        }
    }

    if (retake.empty()) {
        cout << "nobody needs a retake\n";
    } else {
        cout << retake.size() << " retakes, at indexes:";
        for (int i : retake) {
            cout << ' ' << i << " (" << marks[i] << ")";
        }
        cout << '\n';
    }
    return 0;
}
3 retakes, at indexes: 1 (45) 3 (38) 5 (49)

āĻŽāĻžāύ āύāĻž āϰ⧇āϖ⧇ index āϰāĻžāĻ–āϞ⧇ āĻŽā§‚āϞ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āϏāĻžāĻĨ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ—āϟāĻž āĻĨ⧇āϕ⧇ āϝāĻžāϝāĻŧ, āϤāĻžāχ āĻĒā§āϰāϤāĻŋāϟāĻž retake āϤāĻ–āύ⧋ āύāĻŋāĻœā§‡āϰ āύāĻŽā§āĻŦāϰ print āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

Run in Compiler
Example 2: āĻāĻ• āϏāĻĒā§āϤāĻžāĻšā§‡āϰ moving average

Maria āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ⧇āϰ āĻŦāĻŋāĻ•ā§āϰāĻŋāϰ āĻ“āĻ āĻžāύāĻžāĻŽāĻž 3 āĻĻāĻŋāύ⧇āϰ āĻ—āĻĄāĻŧ āĻĻāĻŋāϝāĻŧ⧇ āĻŽāϏ⧃āĻŖ āĻ•āϰ⧇āĨ¤ Program 5-āĻāϰ prefix vector āĻĨāĻžāĻ•āϞ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž window-āĻāϰ āϝ⧋āĻ—āĻĢāϞ āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻž āĻŦāĻŋāϝāĻŧā§‹āĻ—, window āϝāϤ āϚāĻ“āĻĄāĻŧāĻžāχ āĻšā§‹āĻ•āĨ¤

#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> sales{12, 15, 9, 20, 18, 25, 30};
    int n = sales.size();
    int w = 3;

    vector<long long> prefix(n + 1, 0);
    for (int i = 0; i < n; i++) {
        prefix[i + 1] = prefix[i] + sales[i];
    }

    cout << fixed << setprecision(2);
    for (int end = w; end <= n; end++) {
        double avg = (double)(prefix[end] - prefix[end - w]) / w;
        cout << "days " << end - w + 1 << "-" << end << ": " << avg << '\n';
    }
    return 0;
}
days 1-3: 12.00
days 2-4: 14.67
days 3-5: 15.67
days 4-6: 21.00
days 5-7: 24.33

āĻĻāĻŋāύ āĻ—ā§‹āύāĻž āĻšāϝāĻŧ 1 āĻĨ⧇āϕ⧇, āϤāĻžāχ end āĻĻāĻŋāύ⧇ āĻļ⧇āώ āĻšāĻ“āϝāĻŧāĻž window-āĻāϰ āϝ⧋āĻ—āĻĢāϞ prefix[end] - prefix[end - w]āĨ¤ 30 āĻĻāĻŋāύ⧇āϰ window āĻšāϞ⧇āĻ“ āĻĒā§āϰāϤāĻŋ āϞāĻžāχāύ⧇ āĻ–āϰāϚ āĻšā§āĻŦāĻšā§ āĻāĻ•āχ āĻĨāĻžāĻ•āϤāĨ¤

Run in Compiler
Example 3: grid-āĻāϰ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻļā§€

Bob-āĻāϰ minesweeper board-āĻ mine-āĻāϰ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āϞ⧇āĻ–āĻž 1āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻ–āĻžāϞāĻŋ āϘāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ“ print āĻ•āϰ⧇, āϚāĻžāϰ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻļā§€āϰ āĻŽāĻ§ā§āϝ⧇, āĻŽāĻžāύ⧇ āωāĻĒāϰ, āύāĻŋāϚ, āĻŦāĻžāρ āφāϰ āĻĄāĻžāύ, āĻ•āϝāĻŧāϟāĻžāϝāĻŧ mine āφāϛ⧇āĨ¤ āϏ⧀āĻŽāĻžāϰ check-āϟāĻžāχ āĻ•āĻŋāύāĻžāϰāĻžāϰ āϘāϰāϗ⧁āϞ⧋āϕ⧇ grid-āĻāϰ āĻŦāĻžāχāϰ⧇ āĻĒāĻĄāĻŧāϤ⧇ āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<vector<int>> mine{
        {0, 1, 0, 0},
        {0, 0, 0, 1},
        {1, 0, 0, 0},
    };
    int r = mine.size();
    int c = mine[0].size();
    int dr[4] = {-1, 1, 0, 0};
    int dc[4] = {0, 0, -1, 1};

    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++) {
            if (mine[i][j] == 1) {
                cout << '*';
                continue;
            }
            int near = 0;
            for (int d = 0; d < 4; d++) {
                int ni = i + dr[d], nj = j + dc[d];
                if (ni >= 0 && ni < r && nj >= 0 && nj < c) {
                    near += mine[ni][nj];
                }
            }
            cout << near;
        }
        cout << '\n';
    }
    return 0;
}
1*11
111*
*101

āϛ⧋āϟ āĻĻ⧁āχāϟāĻž array dr āφāϰ dc āϚāĻžāϰāϟāĻž āϧāĻžāĻĒ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻž āϰāĻžāϖ⧇, āϤāĻžāχ āĻāĻ•āϟāĻž loop āĻĻāĻŋāϝāĻŧ⧇āχ āϚāĻžāϰāϟāĻž copy āĻ•āϰāĻž if block-āĻāϰ āĻ•āĻžāϜ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ Vector-āĻāϰ vector-āϟāĻž braces-āĻ āϞ⧇āĻ–āĻž, āϏāĻžāϰāĻŋ āϧāϰ⧇ āϧāϰ⧇, āĻ āĻŋāĻ• āϝ⧇āĻ­āĻžāĻŦ⧇ āϤ⧁āĻŽāĻŋ āĻ•āĻžāĻ—āĻœā§‡ āφāρāĻ•āϤ⧇āĨ¤

Run in Compiler

āĻāϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇

  • OpenCV. cv::findContours āĻāĻ•āϟāĻž āĻ›āĻŦāĻŋāϤ⧇ āϝ⧇ outline-āϗ⧁āϞ⧋ āϖ⧁āρāĻœā§‡ āĻĒāĻžāϝāĻŧ, āϏ⧇āϗ⧁āϞ⧋ return āĻ•āϰ⧇ std::vector<std::vector<cv::Point>> āĻšāĻŋāϏ⧇āĻŦ⧇: āĻĒā§āϰāϤāĻŋāϟāĻž outline-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ• āϏāĻžāϰāĻŋ, āϝ⧇āϟāĻž āĻ“āχ outline-āĻāϰ point-āĻāϰ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āϏāĻŽāĻžāύ āϞāĻŽā§āĻŦāĻžāĨ¤ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻ“āϝāĻŧāĻž vision library-āϗ⧁āϞ⧋āϰ āĻāĻ•āϟāĻžāϝāĻŧ āĻāϟāĻž Program 4-āĻāϰ āϏ⧇āχ ragged āφāĻ•āĻžāϰāĨ¤
  • LLVM. āĻāχ compiler project āϞāĻŋāϖ⧇āϛ⧇ SmallVector, āĻāĻŽāύ āĻāĻ•āϟāĻž vector, āϝ⧇āϟāĻž āĻĒā§āϰāĻĨāĻŽ āĻ•āϝāĻŧ⧇āĻ•āϟāĻž element handle-āĻāϰ āĻ­āĻŋāϤāϰ⧇āχ āϰāĻžāϖ⧇āĨ¤ āĻ“āĻĻ⧇āϰ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϤāĻžāϞāĻŋāĻ•āĻž āϛ⧋āϟ, āϤāĻžāχ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ—āχ āĻ•āĻ–āύ⧋ heap āϛ⧋āρāϝāĻŧ āύāĻžāĨ¤ āĻāϟāĻž āϕ⧇āύ āϜāϰ⧁āϰāĻŋ, āĻŽā§‡āĻĒ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇ lesson 05āĨ¤
  • Godot. āĻāχ game engine-āĻāϰ āύāĻŋāĻœā§‡āϰ āĻāĻ•āϟāĻž Vector<T> template āφāϛ⧇, āϝ⧇āϟāĻž copy-āϗ⧁āϞ⧋āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻžāχ block āĻ­āĻžāĻ— āĻ•āϰ⧇ āϰāĻžāϖ⧇, āϝāϤāĻ•ā§āώāĻŖ āύāĻž āϕ⧋āύ⧋ āĻāĻ•āϟāĻž āĻŦāĻĻāϞāĻžāϝāĻŧāĨ¤ Memory āĻ āĻŋāĻ• āĻ•āĻ–āύ copy āĻšāĻŦ⧇, āϏ⧇āϟāĻž āύāĻŋāĻœā§‡āϰ āĻšāĻžāϤ⧇ āϰāĻžāĻ–āϤ⧇āχ engine-āϗ⧁āϞ⧋ āύāĻŋāĻœā§‡āĻĻ⧇āϰ container āϞ⧇āϖ⧇āĨ¤
  • SQLite, C-āĻāϰ āϏāĻžāĻĨ⧇ āϤ⧁āϞāύāĻžāĨ¤ SQLite āϞ⧇āĻ–āĻž C-āĻ, āϤāĻžāχ āĻ“ āύāĻŋāĻœā§‡āϰ array āĻšāĻžāϤ⧇ āĻšāĻžāϤ⧇ āĻŦāĻĄāĻŧ āĻ•āϰ⧇āĨ¤ āĻ“āϰ helper sqlite3ArrayAllocate array āĻ­āϰ⧇ āϗ⧇āϞ⧇ āĻ“āϰ āϜāĻžāϝāĻŧāĻ—āĻž āĻĻā§āĻŦāĻŋāϗ⧁āĻŖ āĻ•āϰ⧇, āĻŽāĻžāύ⧇ āϝ⧇ āĻ•āĻžāϜāϟāĻž push_back āϤ⧋āĻŽāĻžāϰ āĻšāϝāĻŧ⧇ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤

āϝ⧇ āϭ⧁āϞāϗ⧁āϞ⧋ āϏāĻŦāĻžāχ āĻ•āϰ⧇

ā§§. āϏāĻžāϰāĻŋ āĻŦāĻžāύāĻžāύ⧋, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ“āĻĻ⧇āϰ āĻ•āϞāĻžāĻŽ āύāĻžāĨ¤

vector<vector<int>> g(r);
g[0][0] = 5;

āϕ⧋āύ⧋ command line-āĻāχ āĻŦāĻžāĻ°ā§āϤāĻž āύ⧇āχāĨ¤ Playground-āĻ āĻļ⧇āώ āĻšāϝāĻŧ⧇āϛ⧇ Runtime error badge āύāĻŋāϝāĻŧ⧇, āϕ⧋āύ⧋ output āĻ›āĻžāĻĄāĻŧāĻžāĨ¤ g(r) r-āϟāĻž āϏāĻžāϰāĻŋ āĻŦāĻžāύāĻžāϝāĻŧ, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻžāχ āĻāĻ•āϟāĻž āĻ–āĻžāϞāĻŋ vector, āϤāĻžāχ g[0][0]-āĻāϰ āĻ…āĻ¸ā§āϤāĻŋāĻ¤ā§āĻŦāχ āύ⧇āχāĨ¤ āϞ⧇āĻ–ā§‹ g(r, vector<int>(c))āĨ¤ āĻ­āĻŋāϤāϰ⧇āϰ āĻ…āĻ‚āĻļāϟāĻž āϤ⧁āĻŽāĻŋ āϭ⧁āϞāĻŦ⧇, āĻ•āĻžāϰāĻŖ C-āĻāϰ grid declare āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĻ⧁āĻŸā§‹ size āĻāĻ•āϏāĻžāĻĨ⧇āχ āĻĻāĻŋāϤ⧇āĨ¤

⧍. n size-āĻāϰ prefix vector, āφāϰ l = 0-āϤ⧇ prefix[l - 1]āĨ¤

vector<int> p(a.size());
p[0] = a[0];
for (size_t i = 1; i < a.size(); i++) {
    p[i] = p[i - 1] + a[i];
}
int l = 0, r = 2;
cout << p[r] - p[l - 1] << '\n';

āϕ⧋āύ⧋ āĻŦāĻžāĻ°ā§āϤāĻž āύ⧇āχāĨ¤ a = {4, -2, 7, 1, 3} āĻĻāĻŋāϝāĻŧ⧇ Playground print āĻ•āϰ⧇āϛ⧇ 9, āφāϰ badge āĻĻ⧇āĻ–āĻŋāϝāĻŧ⧇āϛ⧇ āϏāĻĢāϞāĨ¤ āωāĻ¤ā§āϤāϰāϟāĻž āĻ āĻŋāĻ• āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻĒāĻžāϞ⧇āϰ āĻœā§‹āϰ⧇: p[-1] vector-āĻāϰ āφāϗ⧇āϰ āĻāĻŽāύ āĻāĻ•āϟāĻž āĻŦāĻžāĻ•ā§āϏ āĻĒāĻĄāĻŧ⧇āϛ⧇, āϝ⧇āϟāĻžāϝāĻŧ āϘāϟāύāĻžāϚāĻ•ā§āϰ⧇ 0 āĻ›āĻŋāϞāĨ¤ Program 5-āĻāϰ n + 1 āϧāĻžāρāϚāϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋, āϝ⧇āĻ–āĻžāύ⧇ prefix[0] āϏāĻ¤ā§āϝāĻŋāĻ•āĻžāϰ⧇āϰ āĻāĻ•āϟāĻž 0āĨ¤ āϤ⧁āĻŽāĻŋ size n āϞāĻŋāĻ–āĻŦ⧇, āĻ•āĻžāϰāĻŖ "āĻĒā§āϰāϤāĻŋ element-āĻ āĻāĻ•āϟāĻž āϝ⧋āĻ—āĻĢāϞ" āĻļ⧁āύāϞ⧇ āĻŽāύ⧇ āĻšāϝāĻŧ āϝ⧋āĻ—āĻĢāϞ n-āϟāĻžāχāĨ¤

ā§Š. āĻāĻ•āϟāĻž int-āĻ āϝ⧋āĻ— āĻ•āϰāĻžāĨ¤

vector<int> sales(3, 1000000000);
int total = 0;
for (int s : sales) {
    total += s;
}

āϕ⧋āύ⧋ command line-āĻāχ āĻŦāĻžāĻ°ā§āϤāĻž āύ⧇āχ, āφāϰ -O2-āĻ GCC 12 print āĻ•āϰ⧇āϛ⧇ -1294967296āĨ¤ 300 āϕ⧋āϟāĻŋ āĻāĻ•āϟāĻž int-āĻ āφāρāĻŸā§‡ āύāĻž, āϝāĻžāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āĻŽāĻžāύ 2147483647, āϤāĻžāχ āϝ⧋āĻ—āĻĢāϞ overflow āĻ•āϰ⧇āϛ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āϝ⧋āĻ—āĻĢāϞ long long āĻ•āϰ⧋, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻž prefix vector vector<long long>āĨ¤ āϤ⧁āĻŽāĻŋ int āϞāĻŋāĻ–āĻŦ⧇, āĻ•āĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāϟāĻž āĻŽāĻžāύ āϤ⧋ āφāρāĻŸā§‡; āφāρāĻŸā§‡ āύāĻž āĻļ⧁āϧ⧁ āĻ“āĻĻ⧇āϰ āϝ⧋āĻ—āĻĢāϞāĨ¤

ā§Ē. āĻāĻ•āϟāĻž āϏāĻžāϰāĻŋāϰ copy āĻŦāĻĻāϞāĻžāύ⧋āĨ¤

for (vector<int> row : g) {
    row[0] = 0;
}

āϕ⧋āύ⧋ āĻŦāĻžāĻ°ā§āϤāĻž āύ⧇āχ, āϕ⧋āύ⧋ āĻŦāĻĻāϞāĻ“ āύ⧇āχ: g āĻšā§āĻŦāĻšā§ āφāϗ⧇āϰ āĻŽāϤ⧋āχāĨ¤ vector<int> row āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻžāϰāĻŋ copy āĻ•āϰ⧇, āφāϰ loop āĻŦāĻĻāϞāĻžāϝāĻŧ āϏ⧇āχ copy-āϟāĻžāĨ¤ āĻŦāĻĻāϞāĻžāϤ⧇ āϚāĻžāχāϞ⧇ āϞ⧇āĻ–ā§‹ vector<int>& row, āĻļ⧁āϧ⧁ āĻĒāĻĄāĻŧāϤ⧇ āϚāĻžāχāϞ⧇ const vector<int>& row, āϤāĻžāϤ⧇ copy-āĻ“ āĻšāϝāĻŧ āύāĻžāĨ¤ āϤ⧁āĻŽāĻŋ copy-āϟāĻžāχ āϞāĻŋāĻ–āĻŦ⧇, āĻ•āĻžāϰāĻŖ int element-āĻāϰ āĻŦ⧇āϞāĻžāϝāĻŧ copy āĻ•āĻ–āύ⧋ āϕ⧋āύ⧋ āĻāĻžāĻŽā§‡āϞāĻž āĻ•āϰ⧇āύāĻŋāĨ¤

āĻŽāĻžāĻĨāĻž āĻ–āĻžāϟāĻžāĻ“

Lesson 01 āĻŦāϞ⧇āĻ›āĻŋāϞ, vector-āĻāϰ element-āϗ⧁āϞ⧋ āĻāĻ•āϟāĻž block-āĻ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻŦāϏ⧇āĨ¤ āĻāχ program āĻāĻ•āϟāĻž 3 by 3 grid-āĻāϰ āϤāĻŋāύāϟāĻž element āϕ⧋āĻĨāĻžāϝāĻŧ āĻĨāĻžāϕ⧇, āϏ⧇āϟāĻž print āĻ•āϰ⧇: g[0][0] āĻĨ⧇āϕ⧇ āĻ•āϝāĻŧāϟāĻž int āĻŦāĻžāĻ•ā§āϏ āĻĻā§‚āϰ⧇āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<vector<int>> g(3, vector<int>(3, 0));
    const int* start = &g[0][0];
    cout << "g[0][2] is " << &g[0][2] - start << " boxes along\n";
    cout << "g[1][0] is " << &g[1][0] - start << " boxes along\n";
    return 0;
}

C array int g[3][3]-āĻ g[1][0] āĻŦāϏ⧇ āĻ āĻŋāĻ• g[0][2]-āĻāϰ āĻĒāϰ⧇, 3-āĻāĨ¤ āĻāχ vector-āĻāϰ vector āĻ•āĻŋ g[1][0]-āĻāϰ āϜāĻ¨ā§āϝ 3 print āĻ•āϰāĻŦ⧇? Program 4-āĻāϰ āĻ›āĻŦāĻŋ āϕ⧀ āĻŦāϞ⧇, āφāϰ āĻŦāĻĄāĻŧ āĻāĻ•āϟāĻž grid-āĻāϰ āωāĻĒāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻšāĻžāρāϟāĻžāϰ āϏāĻŽāϝāĻŧ āĻāϤ⧇ program-āĻāϰ āϕ⧀ āĻ–āϰāϚ āĻšāϤ⧇ āĻĒāĻžāϰ⧇?

seats-āĻāϰ āĻ›āĻŦāĻŋāϟāĻž āφāĻŦāĻžāϰ āĻĻ⧇āĻ–ā§‹āĨ¤ push_back āφāϰ constructor āĻ•āϝāĻŧāϟāĻž block āĻšā§‡āϝāĻŧ⧇āĻ›āĻŋāϞ, āφāϰ āĻĒā§āϰāϤāĻŋāϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻŦāϏāĻŦ⧇, āϏ⧇āϟāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇ āϕ⧇?

āĻ…āύ⧁āĻļā§€āϞāύ ā§§āϏāĻšāϜ

āĻāĻ•āϟāĻž quiz-āĻ āĻĒā§āϰāϤāĻŋāϟāĻž āĻ›āĻžāĻ¤ā§āϰ 0 āĻĨ⧇āϕ⧇ 100-āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž score āĻĒāĻžāϝāĻŧāĨ¤ āĻļāĻŋāĻ•ā§āώāĻ• āϜāĻžāύāϤ⧇ āϚāĻžāύ, āϕ⧋āύ score āĻ•āϝāĻŧāϜāύ āĻĒ⧇āϝāĻŧ⧇āϛ⧇āĨ¤

Input. āĻāĻ• āϞāĻžāχāύ⧇ n, āϤāĻžāϰāĻĒāϰ 0 āĻĨ⧇āϕ⧇ 100-āĻāϰ āĻŽāĻ§ā§āϝ⧇ n-āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāĨ¤

Output. āϝ⧇ score-āϗ⧁āϞ⧋ āĻāϏ⧇āϛ⧇, āϛ⧋āϟ āĻĨ⧇āϕ⧇ āĻŦāĻĄāĻŧ āĻ•ā§āϰāĻŽā§‡ āϤāĻžāϰ āĻĒā§āϰāϤāĻŋāϟāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ• āϞāĻžāχāύ: score āφāϰ āϏ⧇āϟāĻž āĻ•āϤāĻŦāĻžāϰ āĻāϏ⧇āϛ⧇, āĻŽāĻžāĻā§‡ āĻāĻ•āϟāĻž spaceāĨ¤

Constraints. 1 <= n <= 200000āĨ¤

Sample. Input 8 āφāϰ 3 7 3 0 100 7 3 5 āĻĻāĻŋāϞ⧇ āĻĒāĻžāρāϚāϟāĻž āϞāĻžāχāύ: 0 1, 3 3, 5 1, 7 2 āφāϰ 100 1āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> scores(n);
    for (int& s : scores) {
        cin >> s;
    }

    // Count each score from 0 to 100 in a vector,
    // then print "score count" for every score that appears.

    return 0;
}

frequency-table āύāĻžāĻŽā§‡ āĻ—ā§āϰ⧇āĻĄ āĻšāϝāĻŧ, āĻāχ module-āĻāϰ set-āĻāϰ āĻāĻ•āϟāĻž free problemāĨ¤ Hidden test-āĻ āφāϛ⧇ score 0 āφāϰ 100, āφāϰ āĻāĻŽāύ āĻāĻ•āϟāĻž āϤāĻžāϞāĻŋāĻ•āĻž, āϝ⧇āĻ–āĻžāύ⧇ āϏāĻŦ score āĻāĻ•āχāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ⧍āĻŽāĻžāĻāĻžāϰāĻŋ

Kenji-āϰ game-āĻ n-āϟāĻž round āφāϰ q-āϟāĻž āĻĒā§āϰāĻļā§āύāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻĒā§āϰāĻļā§āύ āϜāĻžāύāϤ⧇ āϚāĻžāϝāĻŧ round l āĻĨ⧇āϕ⧇ r-āĻāϰ āĻŽā§‹āϟ point, 1 āĻĨ⧇āϕ⧇ āϗ⧁āύ⧇āĨ¤

Input. āĻāĻ• āϞāĻžāχāύ⧇ n āφāϰ q, āĻāĻ• āϞāĻžāχāύ⧇ n-āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž, āϤāĻžāϰāĻĒāϰ q-āϟāĻž āϞāĻžāχāύ⧇ l āφāϰ rāĨ¤

Output. q-āϟāĻž āϞāĻžāχāύ, āĻĒā§āϰāϤāĻŋāϟāĻžāϝāĻŧ round l āĻĨ⧇āϕ⧇ r-āĻāϰ āϝ⧋āĻ—āĻĢāϞ, āĻĻ⧁āχ āĻŽāĻžāĻĨāĻžāϏāĻšāĨ¤

Constraints. 1 <= n, q <= 200000, 1 <= l <= r <= nāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻŽāĻžāύ -1000000000 āĻĨ⧇āϕ⧇ 1000000000-āĻāϰ āĻŽāĻ§ā§āϝ⧇āĨ¤

Sample. Input 5 3, 4 -2 7 1 3, āϤāĻžāϰāĻĒāϰ 1 3, 2 5 āφāϰ 4 4 āĻĻāĻŋāϞ⧇ 9, 9 āφāϰ 1āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, q;
    cin >> n >> q;
    vector<int> points(n);
    for (int& p : points) {
        cin >> p;
    }

    // Build the prefix sums once, then answer each question with one subtraction.

    for (int i = 0; i < q; i++) {
        int l, r;
        cin >> l >> r;
        // print the sum of rounds l..r
    }
    return 0;
}

prefix-range-sums āύāĻžāĻŽā§‡ āĻ—ā§āϰ⧇āĻĄ āĻšāϝāĻŧāĨ¤ Hidden test-āĻ āφāϛ⧇ l = 1, l = r, āφāϰ āĻāĻŽāύ āĻŽā§‹āϟ, āϝ⧇āϟāĻž āĻāĻ•āϟāĻž int-āĻ āϧāϰ⧇ āύāĻžāĨ¤ āĻāĻ•āϟāĻž test-āĻ 200000 āĻĻāĻŋāύ āφāϰ āĻĒ⧁āϰ⧋āϟāĻž āύāĻŋāϝāĻŧ⧇ 61527āϟāĻž āĻĒā§āϰāĻļā§āύ, āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž range āφāĻŦāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻ…āύ⧇āĻ• āϧ⧀āϰāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ā§ŠāĻŽāĻžāĻāĻžāϰāĻŋ

Program 4-āĻāϰ Maria-āϰ āĻĻā§‹āĻ•āĻžāύ⧇āϰ grid-āĻ r-āϟāĻž āϤāĻžāĻ• āφāϰ c-āϟāĻž āĻ–ā§‹āĻĒāĨ¤ āĻ“ āϚāĻžāϝāĻŧ āĻĒā§āϰāϤāĻŋāϟāĻž āϤāĻžāϕ⧇āϰ āĻŽā§‹āϟ, āφāϰ āĻ–ā§‹āĻĒ⧇āϰ āĻĒā§āϰāϤāĻŋāϟāĻž āĻ•āϞāĻžāĻŽā§‡āϰ āĻŽā§‹āϟāĨ¤

Input. āĻāĻ• āϞāĻžāχāύ⧇ r āφāϰ c, āϤāĻžāϰāĻĒāϰ r-āϟāĻž āϞāĻžāχāύ, āĻĒā§āϰāϤāĻŋāϟāĻžāϝāĻŧ c-āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāĨ¤

Output. āĻĻ⧁āχ āϞāĻžāχāύ: r-āϟāĻž āϏāĻžāϰāĻŋāϰ āϝ⧋āĻ—āĻĢāϞ, āϤāĻžāϰāĻĒāϰ c-āϟāĻž āĻ•āϞāĻžāĻŽā§‡āϰ āϝ⧋āĻ—āĻĢāϞ, āĻŽāĻžāĻā§‡ āĻāĻ•āϟāĻž āĻ•āϰ⧇ spaceāĨ¤

Constraints. 1 <= r, c <= 500āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻŽāĻžāύ -1000000000 āĻĨ⧇āϕ⧇ 1000000000-āĻāϰ āĻŽāĻ§ā§āϝ⧇āĨ¤

Sample. Input 2 3, 1 2 3 āφāϰ 4 5 6 āĻĻāĻŋāϞ⧇ 6 15 āφāϰ 5 7 9āĨ¤

#include <iostream>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int r, c;
    cin >> r >> c;
    vector<vector<int>> g(r, vector<int>(c));
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++) {
            cin >> g[i][j];
        }
    }

    // Print the r row sums on one line, then the c column sums on the next.

    return 0;
}

grid-row-col-sums āύāĻžāĻŽā§‡ āĻ—ā§āϰ⧇āĻĄ āĻšāϝāĻŧāĨ¤ Hidden test-āĻ āφāϛ⧇ 1 by 1 grid, āĻāĻ•āϟāĻžāĻŽāĻžāĻ¤ā§āϰ āϏāĻžāϰāĻŋ, āĻāĻ•āϟāĻžāĻŽāĻžāĻ¤ā§āϰ āĻ•āϞāĻžāĻŽ, āφāϰ āĻāĻ• āϏāĻžāϰāĻŋāϤ⧇ 109-āĻāϰ 500āϟāĻž āĻŽāĻžāύāĨ¤

Run in Compiler

āϏāϚāϰāĻžāϚāϰ āϝ⧇ āĻĒā§āϰāĻļā§āύāϗ⧁āϞ⧋ āφāϏ⧇

  • Prefix vector data-āϰ āĻšā§‡āϝāĻŧ⧇ āĻāĻ•āϟāĻž āĻŦ⧇āĻļāĻŋ āϞāĻŽā§āĻŦāĻž āϕ⧇āύ?

    āϝāĻžāϤ⧇ "āĻĒā§āϰāĻĨāĻŽ 0-āϟāĻž element-āĻāϰ āϝ⧋āĻ—āĻĢāϞ"-āĻāϰ āϜāĻ¨ā§āϝāĻ“ āĻāĻ•āϟāĻž āĻŦāĻžāĻ•ā§āϏ āĻĨāĻžāϕ⧇, prefix[0] = 0āĨ¤ āϤāĻžāĻšāϞ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž range, āĻĒā§āϰāĻĨāĻŽ element āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻšāĻ“āϝāĻŧāĻžāϟāĻžāĻ“, āĻāĻ•āχ āϏ⧂āĻ¤ā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϕ⧋āύ⧋ āφāϞāĻžāĻĻāĻž case āĻ›āĻžāĻĄāĻŧāĻžāχāĨ¤

  • Grid-āĻāϰ āϜāĻ¨ā§āϝ vector<vector<int>> āύ⧇āĻŦ, āύāĻžāĻ•āĻŋ C array int g[500][500]?

    Vector input āĻĻ⧇āϖ⧇ āύāĻŋāĻœā§‡āϰ size āĻ āĻŋāĻ• āĻ•āϰ⧇, āφāϰ ragged-āĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ C array āĻāĻ•āϟāĻžāχ block, āφāϰ program āϚāϞāĻžāϰ āφāϗ⧇āχ āĻ“āϰ size āϜāĻžāύāĻž āϞāĻžāϗ⧇āĨ¤ Contest-āĻ āĻĻ⧁āĻŸā§‹āχ āϚāϞ⧇; āĻāχ track vector āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āφāϰ āϤāĻĢāĻžāϤāϟāĻž āĻŽā§‡āĻĒ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇ lesson 05āĨ¤

  • Program 6 āĻāĻ•āϟāĻž pair āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āĻ›āĻžāĻ¤ā§āϰāϟāĻž āĻ•āĻŋ āĻŦāϰāĻ‚ āĻāĻ•āϟāĻž struct āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ?

    Module 1-āĻāϰ āύāĻŋāϝāĻŧāĻŽ: āĻ…āĻ˛ā§āĻĒ āϏāĻŽāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ pair, āĻāĻ•āϟāĻž āφāĻ¸ā§āϤ āϜāĻŋāύāĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ structāĨ¤ āϝ⧇ report āĻŦāĻžāĻĄāĻŧāϤ⧇ āĻĨāĻžāĻ•āĻŦ⧇, āϝāĻžāϤ⧇ id, class āφāϰ email āĻĨāĻžāĻ•āĻŦ⧇, āϏ⧇āϟāĻžāϰ āϜāĻ¨ā§āϝ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž field-āϏāĻš āĻāĻ•āϟāĻž struct-āχ āĻ āĻŋāĻ•āĨ¤ āĻāĻ•āĻŦāĻžāϰ āĻĒāĻĄāĻŧ⧇ print āĻ•āϰāĻžāϰ āĻŽāϤ⧋ āĻĻ⧁āχ āĻ…āĻ°ā§āϧ⧇āϕ⧇āϰ āϜāĻ¨ā§āϝ pair-āχ āϝāĻĨ⧇āĻˇā§āϟāĨ¤

  • Judge āϝ⧇ problem āĻĻ⧇āϖ⧇, āϤāĻžāϤ⧇ āĻ•āĻŋ setw āϞāĻžāϗ⧇?

    āύāĻžāĨ¤ Judge-āĻāϰ output-āĻ āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻž āĻ•āϰ⧇ space, statement āϝ⧇āĻŽāύ āĻŦāϞ⧇ āĻ āĻŋāĻ• āϤ⧇āĻŽāύāĨ¤ setw āĻšāϞ⧋ āĻŽāĻžāύ⧁āώ āĻĒāĻĄāĻŧāĻŦ⧇ āĻāĻŽāύ output-āĻāϰ āϜāĻ¨ā§āϝ, āϝ⧇āĻŽāύ Program 4-āĻāϰ grid āφāϰ report-āϟāĻžāĨ¤

āĻŽā§‚āϞ āĻ•āĻĨāĻž

  • vector<int> a(n) āφāϰ for (int& x : a) cin >> x; āĻĻāĻŋāϝāĻŧ⧇ n-āϟāĻž āĻŽāĻžāύ āĻĒāĻĄāĻŧā§‹, āφāϰ print āĻ•āϰ⧋ āĻāĻŽāύ separator āĻĻāĻŋāϝāĻŧ⧇, āϝ⧇āϟāĻž āĻļ⧇āώ⧇ āĻŦāĻžāĻĄāĻŧāϤāĻŋ space āϰāĻžāϖ⧇ āύāĻžāĨ¤
  • āϚāϞāϤāĻŋ āϏāĻ°ā§āĻŦā§‹āĻšā§āĻšā§‡āϰ āϜāĻ¨ā§āϝ āϏ⧇āϰāĻž index-āϟāĻž āϰāĻžāĻ–ā§‹; > āϏāĻŽāĻžāύ āĻšāϞ⧇ āĻĒā§āϰāĻĨāĻŽāϟāĻžāχ āϰ⧇āϖ⧇ āĻĻ⧇āϝāĻŧāĨ¤
  • vector<int> count(k, 0) āĻāĻ•āϟāĻž āĻŽāĻžāύāϕ⧇ index āĻŦāĻžāύāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ: range check āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻĒā§āϰāϤāĻŋ input-āĻ āĻāĻ• āϧāĻžāĻĒāĨ¤
  • vector<vector<int>> g(r, vector<int>(c)) āĻāĻ•āϟāĻž grid; push_back āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻžāύāĻžāϞ⧇ āĻāϰ āϏāĻžāϰāĻŋāϗ⧁āϞ⧋ āφāϞāĻžāĻĻāĻž āφāϞāĻžāĻĻāĻž āϞāĻŽā§āĻŦāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • n + 1āϟāĻž long long āϝ⧋āĻ—āĻĢāϞ⧇āϰ āĻāĻ•āϟāĻž prefix vector āĻĒā§āϰāϤāĻŋāϟāĻž range sum-āĻāϰ āωāĻ¤ā§āϤāϰ āĻĻ⧇āϝāĻŧ āĻāĻ•āϟāĻž āĻŦāĻŋāϝāĻŧā§‹āϗ⧇āĨ¤
  • āφāϰāĻ“ āĻ—āĻ­ā§€āϰ⧇ āϝ⧇āϤ⧇ āϚāĻžāχāϞ⧇: Under the Hood, vector āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦāĻĄāĻŧ āĻšāϝāĻŧ āφāϰ āϤāĻžāϤ⧇ āϕ⧀ āϕ⧀ āĻ­āĻžāϙ⧇ (Pro)āĨ¤

āĻāϰāĻĒāϰ lesson 04 āϜāĻžāύāϤ⧇ āϚāĻžāϝāĻŧ, āĻ•āĻ–āύ vector āĻ āĻŋāĻ• āϜāĻŋāύāĻŋāϏ āύāĻž, āφāϰ āĻ“āϰ āĻŦāĻĻāϞ⧇ āϕ⧋āύ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻļā§€āϕ⧇ āύ⧇āĻŦ⧇, āϏ⧇āϟāĻž āĻŦ⧇āϛ⧇ āĻĻāĻŋāϤ⧇ āφāρāϕ⧇ āĻāĻ•āϟāĻž chart āφāϰ āĻāĻ•āϟāĻž flowchartāĨ¤

lesson ā§Š āĻļ⧇āώ

āĻļ⧇āώ āĻšāϞ⧇ āϚāĻŋāĻšā§āύ āĻĻāĻŋāύ, āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āφāĻĒāύāĻžāϰ āϏāĻžāĻĨ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻĒāϰ⧇āϰāϟāĻž: vector āĻ•āĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇, āφāϰ āĻ•āĻ–āύ āύāĻž

āĻĒ⧁āϰ⧋ program: āĻĒāĻžāρāϚ āϞāĻžāχāύ āĻĨ⧇āϕ⧇ āϏāĻ¤ā§āϝāĻŋāĻ•āĻžāϰ⧇āϰ āĻāĻ•āϟāĻž tool āĻĒāĻ°ā§āϝāĻ¨ā§āϤ | Learn C++ STL | Progsity