Module ⧍ ¡ vector: āϝ⧠container-āĻāĻž āϏāĻŦāĻžāϰ āĻāĻā§ āĻšāĻžāϤ⧠āĻāϏā§
āĻĒā§āϰ⧠program: āĻĒāĻžāĻāĻ āϞāĻžāĻāύ āĻĨā§āĻā§ āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ āĻāĻāĻāĻž tool āĻĒāϰā§āϝāύā§āϤ
āĻāĻ 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 āϝāĻž āĻŦāĻžāύāĻžāϞ, āĻāĻŦāĻŋāϤ⧠āϏā§āĻāĻžāĻ āĻĻā§āĻā§āĨ¤
āϤāĻžāĻ 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āĨ¤
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 CompilerMaria āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύā§āϰ āĻŦāĻŋāĻā§āϰāĻŋāϰ āĻāĻ āĻžāύāĻžāĻŽāĻž 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 āĻšāϞā§āĻ āĻĒā§āϰāϤāĻŋ āϞāĻžāĻāύ⧠āĻāϰāĻ āĻšā§āĻŦāĻšā§ āĻāĻāĻ āĻĨāĻžāĻāϤāĨ¤
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-āĻ āϞā§āĻāĻž, āϏāĻžāϰāĻŋ āϧāϰ⧠āϧāϰā§, āĻ āĻŋāĻ āϝā§āĻāĻžāĻŦā§ āϤā§āĻŽāĻŋ āĻāĻžāĻāĻā§ āĻāĻāĻāϤā§āĨ¤
āĻāĻāĻž āĻā§āĻĨāĻžāϝāĻŧ āĻāĻžāĻā§ āϞāĻžāĻā§
- 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
sqlite3ArrayAllocatearray āĻāϰ⧠āĻā§āϞ⧠āĻāϰ āĻāĻžāϝāĻŧāĻāĻž āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻāϰā§, āĻŽāĻžāύ⧠āϝ⧠āĻāĻžāĻāĻāĻž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 āĻāĻāύ⧠āĻā§āύ⧠āĻāĻžāĻŽā§āϞāĻž āĻāϰā§āύāĻŋāĨ¤
āĻāĻāĻāĻž 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 āĻāĻāĻāĨ¤
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 āĻāĻŦāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻ
āύā§āĻ āϧā§āϰāĨ¤
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āĻāĻž āĻŽāĻžāύāĨ¤
āϏāĻāϰāĻžāĻāϰ āϝ⧠āĻĒā§āϰāĻļā§āύāĻā§āϞ⧠āĻāϏā§
Prefix vector data-āϰ āĻā§āϝāĻŧā§ āĻāĻāĻāĻž āĻŦā§āĻļāĻŋ āϞāĻŽā§āĻŦāĻž āĻā§āύ?
āϝāĻžāϤ⧠"āĻĒā§āϰāĻĨāĻŽ 0-āĻāĻž element-āĻāϰ āϝā§āĻāĻĢāϞ"-āĻāϰ āĻāύā§āϝāĻ āĻāĻāĻāĻž āĻŦāĻžāĻā§āϏ āĻĨāĻžāĻā§,
prefix[0] = 0āĨ¤ āϤāĻžāĻšāϞ⧠āĻĒā§āϰāϤāĻŋāĻāĻž range, āĻĒā§āϰāĻĨāĻŽ element āĻĨā§āĻā§ āĻļā§āϰ⧠āĻšāĻāϝāĻŧāĻžāĻāĻžāĻ, āĻāĻāĻ āϏā§āϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻā§āύ⧠āĻāϞāĻžāĻĻāĻž case āĻāĻžāĻĄāĻŧāĻžāĻāĨ¤Grid-āĻāϰ āĻāύā§āϝ
vector<vector<int>>āύā§āĻŦ, āύāĻžāĻāĻŋ C arrayint 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 āĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§, āĻāϰ āĻāĻāύ āύāĻž