🙆♀️
競技プログラミング 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