210122|Baek Jun Griddyアルゴリズム1541、11399|C++


1541


1541号:失われたかっこ

🎈 解決策

stoi(const string& str)stringをintタイプの関数に変換し、&(reference)を使用してstringを渡します.else temp += str[i];現在のインデックス文字列が演算子でない場合(else)tempは現在の文字列をif (str[i] == '-' || str[i] == '+' || str[i] == '\0')演算子が表示される場合if (minus)resultで以前に表示された演算子がマイナス記号であるかどうかを確認します.if (minus) result -= stoi(temp); else result += stoi(temp);状況に応じて-または+計算!if (str[i] == '-') minus = 1;演算子が-の場合、マイナスboolをtrueにします.
#include <iostream>
#include <string>
using namespace std;

int main() {
	string str;
	cin >> str;
	string temp = "";

	bool minus = false;
	int result = 0;

	for (int i = 0; i <= str.length(); i++) {
		if (str[i] == '-' || str[i] == '+' || str[i] == '\0') {
			if (minus)
				result -= stoi(temp);
			else
				result += stoi(temp);
			temp = "";
			if (str[i] == '-')
				minus = 1;
		}
		else
			temp += str[i];
	}
	cout << result;
}

11399


11399号:ATM

🎈 解決策


この問題の解決策は,入力した時間を昇順に並べ替え,並べ替えた人数順に入力した時間を適用することで,最短時間を得ることができる.
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int N;
	cin >> N;

	int p[1000];
	for (int i = 0; i < N; i++)
		cin >> p[i];

	sort(p, p + N);

	int result = 0;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j <= i; j++) {
			result += p[j];
		}
	}
	cout << result;

}