結果
問題 | No.1935 Water Simulation |
ユーザー |
![]() |
提出日時 | 2022-05-13 21:51:45 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,471 bytes |
コンパイル時間 | 11,550 ms |
コンパイル使用メモリ | 289,928 KB |
最終ジャッジ日時 | 2025-01-29 06:56:12 |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 WA * 4 |
ソースコード
#pragma GCC target("avx2")#pragma GCC optimize("O3")#pragma GCC optimize("unroll-loops")#include<bits/stdc++.h>using namespace std;using ll = long long;const int INF = 1e9;const ll inf = 1LL<<60;void solve() {vector<ll> v(4);for (int i=0; i<4; i++) cin >> v[i];ll k; cin >> k;set<vector<ll>> s;deque<vector<ll>> d;vector<ll> val = {v[0], 0, 0, 0};s.insert(val);d.push_back(val);int cur = 0;ll pre = 0, loop = 0;while (1) {if (val[cur] + val[(cur+1)%4] <= v[(cur+1)%4]) {val[(cur+1)%4] += val[cur];val[cur] = 0;} else {val[cur] -= v[(cur+1)%4] - val[(cur+1)%4];val[(cur+1)%4] = v[(cur+1)%4];}if (s.count(val)) {while (d.back() != val) {loop++;d.pop_back();}loop++;d.pop_back();pre = d.size();break;} else {s.insert(val);d.push_back(val);}cur++;cur %= 4;}k++;if (k > pre) k = pre + ((k - pre)%loop == 0 ? loop : (k-pre)%loop);val = {v[0], 0, 0, 0};for (int i=0; i<k-1; i++) {int cur = 0;if (val[i%4] + val[(i+1)%4] <= v[(i+1)%4]) {val[(i+1)%4] += val[i%4];val[i%4] = 0;} else {val[i%4] -= v[(i+1)%4] - val[(i+1)%4];val[(i+1)%4] = v[(i+1)%4];}}for (auto r : val) cout << r << " ";cout << '\n';}int main() {ios::sync_with_stdio(false);std::cin.tie(nullptr);// int t; cin >> t;/*while (t--)*/ solve();}