13458試験監督
質問リンク
👍 に答える
最初にwhileゲートを全て外す方式を使い、O(N^2)でタイムアウト.
だから数学の上で更に考えてみると、Cに分ける時、分によって少し加えればいいので、まだ残っているものがあれば、+1を加えれば終わりです.
ちなみに、A、B、Cは全部で100万に達し、int型の範囲を超えています
すなわち、出力値cntはlonglong型と宣言すべきである.
コード#コード#
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int N, B, C;
vector<int> abc;
int main() {
cin >> N;
for (int i = 0; i < N; i++) {
int bc;
cin >> bc;
abc.push_back(bc);
}
cin >> B >> C;
long long cnt = 0;
for (int i = 0; i < N; i++) {
cnt++;
abc[i] -= B;
if (abc[i] > 0) {
cnt+=abc[i] / C;
if (abc[i]%C > 0) {
cnt++;
}
}
}
cout << cnt;
return 0;
}
Reference
この問題について(13458試験監督), 我々は、より多くの情報をここで見つけました https://velog.io/@trevor522/13458-시험감독テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol