結果
問題 | No.3017 交互浴 |
ユーザー |
![]() |
提出日時 | 2025-01-25 13:51:32 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 355 ms / 2,000 ms |
コード長 | 1,416 bytes |
コンパイル時間 | 9,048 ms |
コンパイル使用メモリ | 471,752 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2025-01-25 23:01:10 |
合計ジャッジ時間 | 27,204 ms |
ジャッジサーバーID (参考情報) |
judge10 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 55 |
ソースコード
#include <bits/stdc++.h>#include <atcoder/all>#include <boost/multiprecision/cpp_dec_float.hpp>#include <boost/multiprecision/cpp_int.hpp>namespace mp = boost::multiprecision;using Bint = mp::cpp_int;using namespace std;using namespace atcoder;#define rep(i, n) for(int i=0;i<(n);++i)#define rep1(i, n) for(int i=1;i<=(n);i++)#define ll long longusing mint = modint998244353;using P = pair<ll,ll>;using lb = long double;using T = tuple<ll, ll, ll>;#ifdef LOCAL# include <debug_print.hpp># define dbg(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__)#else# define dbg(...) (static_cast<void>(0))#endifint main(){int n;cin >> n;stack<pair<int,int>> st;st.emplace(2e9,0);int ans = 0;rep(i,n) {int h;cin >> h;int now = 0;while(st.top().first<=h) {int nxt = st.top().first;int id = st.top().second;st.pop();if(id==1) ans -= nxt-now;now = nxt;}if(i%2==1) {if(st.top().second==1) {st.emplace(h,0);ans -= h-now;}}else{if(st.top().second==0) {st.emplace(h,1);ans += h;}else{ans+=now;}}cout << ans << endl;dbg(st);}return 0;}