Submission #726946

#TimeUsernameProblemLanguageResultExecution timeMemory
726946pls33Dungeons Game (IOI21_dungeons)C++17
11 / 100
7078 ms28816 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #ifndef _AAAAAAAAA #include "dungeons.h" #endif #pragma region dalykai template <typename F> void _debug(F f) { f(); } #ifndef _AAAAAAAAA #define debug(x) #else #define debug(x) _debug(x) #endif using p32 = pair<int, int>; using p32u = pair<uint32_t, uint32_t>; using p64 = pair<int64_t, int64_t>; using p64u = pair<uint64_t, uint64_t>; using vi16 = vector<int16_t>; using vi16u = vector<uint16_t>; using vi32 = vector<int>; using vi32u = vector<uint32_t>; using vi64 = vector<int64_t>; using vi64u = vector<uint64_t>; using vp32 = vector<p32>; using vp32u = vector<p32u>; using vp64 = vector<p64>; using vp64u = vector<p64u>; using vvi32 = vector<vi32>; using vvi32u = vector<vi32u>; using vvi64 = vector<vi64>; using vvi64u = vector<vi64u>; using vvp32 = vector<vp32>; using vvp32u = vector<vp32u>; using vvp64 = vector<vp64>; using vvp64u = vector<vp64u>; using f80 = long double; #pragma endregion struct dungeon_t { int gain_win; int gain_lose; int win; int lose; }; vector<dungeon_t> dungeon; void init(int n, vector<int> s, vector<int> p, vector<int> w, vector<int> l) { for (int i = 0; i < n; i++) { dungeon.push_back({s[i], p[i], w[i], l[i]}); } return; } long long simulate(int x, int z) { int64_t strength = z; for (int i = x; i < (int)dungeon.size();) { if (strength >= dungeon[i].gain_win) { strength += dungeon[i].gain_win; i = dungeon[i].win; } else { strength += dungeon[i].gain_lose; i = dungeon[i].lose; } } return strength; } #ifdef _AAAAAAAAA int main() { freopen("pozemiai.in", "r", stdin); #ifndef __linux__ atexit([]() { freopen("con", "r", stdin); system("pause"); }); #endif int n, q; std::vector<int> s, p, z; std::vector<int> w, l, x; std::vector<long long> answer; assert(scanf("%d %d", &n, &q) == 2); s.resize(n); p.resize(n); w.resize(n); l.resize(n); x.resize(q); z.resize(q); answer.resize(q); for (int i = 0; i < n; i++) { assert(scanf("%d", &s[i]) == 1); } for (int i = 0; i < n; i++) { assert(scanf("%d", &p[i]) == 1); } for (int i = 0; i < n; i++) { assert(scanf("%d", &w[i]) == 1); } for (int i = 0; i < n; i++) { assert(scanf("%d", &l[i]) == 1); } init(n, s, p, w, l); for (int i = 0; i < q; i++) { assert(scanf("%d %d", &x[i], &z[i]) == 2); answer[i] = simulate(x[i], z[i]); } for (int i = 0; i < q; i++) { printf("%lld\n", answer[i]); } return 0; } #endif

Compilation message (stderr)

dungeons.cpp:12: warning: ignoring '#pragma region dalykai' [-Wunknown-pragmas]
   12 | #pragma region dalykai
      | 
dungeons.cpp:47: warning: ignoring '#pragma endregion ' [-Wunknown-pragmas]
   47 | #pragma endregion
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...