結果
問題 |
No.33 アメーバがたくさん
|
ユーザー |
|
提出日時 | 2025-07-15 11:31:46 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 997 bytes |
コンパイル時間 | 3,021 ms |
コンパイル使用メモリ | 288,524 KB |
実行使用メモリ | 7,716 KB |
最終ジャッジ日時 | 2025-07-15 11:31:50 |
合計ジャッジ時間 | 3,906 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 11 |
ソースコード
#include <bits/stdc++.h> using namespace std; /////////////////// メイン /////////////////// int main () { //////////////////// 入力 //////////////////// int n, d, t; cin >> n >> d >> t; vector<int> a(n); for (int i=0; i<n; i++) { cin >> a.at(i); } //////////////// 出力変数定義 //////////////// long long result = 0; //////////////////// 処理 //////////////////// vector<tuple<int,int,int>> vec(n); for (int i=0; i<n; i++) { int q = a.at(i)/d; int r = a.at(i)%d; if (r<0) { q--; r += d; } vec.at(i) = {r,q-t,q+t}; } sort(vec.begin(),vec.end()); for (int i=0; i<n-1; i++) { if (get<0>(vec.at(i))==get<0>(vec.at(i+1))) get<2>(vec.at(i)) = min(get<2>(vec.at(i)),get<1>(vec.at(i+1))-1); } for (auto [r,left,right] : vec) { result += right-left+1; } //////////////////// 出力 //////////////////// cout << result << endl; //////////////////// 終了 //////////////////// return 0; }