Official

E - キーボード/Keyboard Editorial by mechanicalpenciI


最低 \(1\) 文字は与えられるので最初の \(500\) msは必ずかかります。 その上で、問題文で記載されたルールに従って、\(2\leq i\leq K\) ( ただし、\(K\)\(N\) の桁数 ) 文字目を打つのにかかる時間を加えていきます。これらは for 文と if 文の組み合わせで書く事が出来ます。

#include <bits/stdc++.h>
using namespace std;

int main(void) {
	int n;
	char a[200010];
	int hand[10];

	for (int i = 0; i < 10; i++) {
		if ((1 <= i) && (i <= 5))hand[i] = 1;
		else hand[i] = 0;
	}
	int ans = 500;

	cin >> a;
	n = strlen(a);

	for (int i = 1; i < n; i++) {
		if (a[i - 1] == a[i])ans += 301;
		else if (hand[(a[i - 1] - '0')] == hand[(a[i] - '0')])ans += 210;
		else ans += 100;
	}

	cout << ans << endl;

	return 0;
}

posted:
last update: