🙆♀️
競技プログラミング Tips
概要
競技プログラミングを C++ でやる時に見返すためにメモしている
Vector
動的な配列
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
for (int i = 0; i < n; i++) {
cout << v[i] << endl;
}
}
入力
5
0
1
2
3
4
出力
0
1
2
3
4
Pair
2つの異なる型を保持できるクラス
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
pair<int, int> p[n];
for (int i = 0; i < n; i++) {
cin >> p[i].first >> p[i].second;
}
for (int i = 0; i < n; i++) {
cout << p[i].first << "," << p[i].second << endl;
}
}
入力
5
0 1
2 3
4 5
6 7
8 9
出力
0,1
2,3
4,5
6,7
8,9
Map
ユニークな要素を格納する連想コンテナで key と value を格納する
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
map<string, int> m;
for (int i = 0; i < n; i++) {
string k;
int v;
cin >> k >> v;
m.insert(make_pair(k, v));
}
auto iter = m.begin();
while (iter != m.end()) {
cout << iter->first << "," << iter->second << endl;
++iter;
}
}
入力
5
apple 1
orange 2
banana 3
peach 4
lemon 5
出力
apple,1
banana,3
lemon,5
orange,2
peach,4
Set
ユニークな要素を格納する連想コンテナ
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
set<int> st;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
st.insert(x);
}
for (auto x : st) {
cout << x << endl;
}
}
入力
5
1
2
3
1
2
出力
1
2
3
Discussion