問題概要
タイピングゲーム$N$回をする。 $i$回目では$T[i]$ミリ秒以内に$|S_i|$という文字をタイピングしなければならない。 $m$ミリ秒で$ ⌊12m/1000⌋ $だけ正確にタイピングできるとして、正確にタイプできる文字数と、そうでない文字数を出力せよ。
$N\leqq10^3$、$T[i]\leqq3*10^4$、$|S_i|\leqq10^2$
解法
$ ⌊12m/1000⌋ $と書いてあるので、これより多くあふれた文字数が打てなかった文字列。 これをカウントすればよい。
計算量:$O(N)$
ソース
#include <bits/stdc++.h> using namespace std; #define SZ(a) int((a).size()) #define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++) int main() { cin.tie(0); ios_base::sync_with_stdio(false); int N; cin >> N; int sum = 0; int size = 0; FOR(i, 0, N) { int t; string s; cin >> t >> s; size += SZ(s); sum += min(SZ(s), t * 12 / 1000); } cout << sum << " " << size - sum << endl; return 0; }