競技プログラミング Tips

14942 ワード

概要

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