随時更新します。
あくまでAtCoderで現時点で灰色コーダーのメモです。
数字のペアが入力され、左側の数字で振り分けるとき
7
1 72
2 78
2 94
1 23
2 89
1 40
1 75
int N;
cin >> N;
vector<pair<int, int>> One(100000, {0, 0});
vector<pair<int, int>> Two(100000, {0, 0});
// 1組2組の累積和
for (int i = 0; i < N; i++) {
int n, p;
cin >> n >> p;
if (n == 1) {
One[i + 1].first = i + 1;
One[i + 1].second = One[i].second + p;
Two[i + 1].first = i + 1;
Two[i + 1].second = Two[i].second;
} else {
One[i + 1].first = i + 1;
One[i + 1].second = One[i].second;
Two[i + 1].first = i + 1;
Two[i + 1].second = Two[i].second + p;
}
}
文字列と数値がペアで与えられるとき
5 100
p1 150
p2 80
p3 200
p4 350
p5 20
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, q;
cin >> n >> q;
// vectorの中にpairを入れる
vector<pair<string, int>> NT;
for (int i = 0; i < n; i++) {
string s;
int t;
cin >> s >> t;
NT.push_back({s, t});
}
// 出力
for (const auto& entry : NT) {
cout << entry.first << " " << entry.second << endl;
}
return 0;
}
数値と文字が一列で入力され、個数がわからないとき
1 2 + 3 4 - *
// 数値かそうでないかを判定
bool isInteger (const string input) {
for (size_t i = 0; i < input.size(); ++i) {
if (!isdigit(input[i])) {
return false;
}
}
return true;
}
int main() {
string input;
while (cin >> input) {
if (isInteger(input)) {
// 数値(operands)
} else {
// 符号(operators)
}
}
return 0;
}