結果
問題 | No.1935 Water Simulation |
ユーザー |
![]() |
提出日時 | 2022-05-13 21:41:00 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,005 bytes |
コンパイル時間 | 1,271 ms |
コンパイル使用メモリ | 124,300 KB |
最終ジャッジ日時 | 2025-01-29 06:41:56 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 WA * 4 |
コンパイルメッセージ
main.cpp: In function ‘void solve()’: main.cpp:45:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 45 | scanf("%d%d%d%d%lld", &v0[0], &v0[1], &v0[2], &v0[3], &n); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <iostream>#include <string>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>#include <vector>#include <set>#include <map>#include <queue>#include <stack>#include <list>#include <iterator>#include <cassert>#include <numeric>#include <functional>#include <ctime>#include <bitset>#pragma warning(disable:4996)//#define ATCODER#ifdef ATCODER#include <atcoder/all>#endiftypedef long long ll;typedef unsigned long long ull;#define LINF 9223300000000000000#define LINF2 1223300000000000000#define LINF3 1000000000000#define INF 2140000000const long long MOD = 1000000007;//const long long MOD = 998244353;using namespace std;#ifdef ATCODERusing namespace atcoder;#endifvoid solve(){vector<int> v0(4);ll n;scanf("%d%d%d%d%lld", &v0[0], &v0[1], &v0[2], &v0[3], &n);vector<int> v(4);v[0] = v0[0];vector<int> v00 = v;map<vector<int>, int> mp;mp[v] = 0;int p = 0, q = 0;int found = 0;for (ll i = 1; i <= n; i++) {int i1 = i % 4;int i0 = (i + 3) % 4;int tmp = min(v[i0], v0[i1] - v[i1]);v[i1] += tmp;v[i0] -= tmp;auto it = mp.find(v);if (it != mp.end()) {found = 1; p = it->second; q = i; break;}mp[v] = (int)i;}if (found == 0) {printf("%d %d %d %d\n", v[0], v[1], v[2], v[3]);}else {assert(n >= q);int r = (n - q) % (q - p);int x = p + r;v = v00;for (int i = 1; i <= x; i++) {int i1 = i % 4;int i0 = (i + 3) % 4;int tmp = min(v[i0], v0[i1] - v[i1]);v[i1] += tmp;v[i0] -= tmp;}printf("%d %d %d %d\n", v[0], v[1], v[2], v[3]);}return;}int main(){#if 1solve();#elseint T, t;scanf("%d", &T);for (t = 0; t < T; t++) {//printf("Case #%d: ", t + 1);solve();}#endifreturn 0;}