結果
問題 | No.2927 Reverse Polish Equation |
ユーザー |
![]() |
提出日時 | 2024-10-12 16:48:21 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,506 bytes |
コンパイル時間 | 6,267 ms |
コンパイル使用メモリ | 336,660 KB |
実行使用メモリ | 17,588 KB |
最終ジャッジ日時 | 2024-10-16 00:27:52 |
合計ジャッジ時間 | 12,916 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 WA * 2 |
ソースコード
#include<bits/stdc++.h>#include<atcoder/all>#define chmin(x,y) (x) = min((x),(y))#define chmax(x,y) (x) = max((x),(y))zusing namespace std;using namespace atcoder;using ll = long long;const ll mod = 998244353;using mint = modint998244353;using Graph = vector<vector<pair<int,ll>>>;const vector<int> dx = {1,0,-1,0}, dy = {0,1,0,-1};double dist(int x1, int y1, int x2, int y2){double res = (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2);return sqrt(res);}ll f(ll x, vector<string> v){int n = v.size();vector<ll> a;for(int i = 0; i < n; i++){if(v[i] == "X")a.push_back(x);else if(v[i] == "+"){ll b = a.back();a.pop_back();ll c = a.back();a.pop_back();a.push_back(b+c);}else if(v[i] == "min"){ll b = a.back();a.pop_back();ll c = a.back();a.pop_back();a.push_back(min(b,c));}else if(v[i] == "max"){ll b = a.back();a.pop_back();ll c = a.back();a.pop_back();a.push_back(max(b,c));}else{ll m = stoi(v[i]);a.push_back(m);}}return a.front();}int main(){// inputint Q; ll Y;cin >> Q >> Y;vector<string> S(Q);for(int i = 0; i < Q; i++){cin >> S[i];assert(S[i].size() > 0);}// solvell lo = -1, hi = 1e18;while(abs(hi-lo) > 1){ll mid = (lo + hi) / 2;if(f(mid,S) >= Y) hi = mid;else lo = mid;}// outputcout << (f(hi,S) == Y ? hi : -1) << endl;}