제출 #1179557

#제출 시각아이디문제언어결과실행 시간메모리
1179557Gr1sen던전 (IOI21_dungeons)C++20
0 / 100
7073 ms5900 KiB
#include "dungeons.h" #include <vector> #include<iomanip> #include<algorithm> #include<iostream> using namespace std; #define ll long long #define vi vector<int> #define vl vector<ll> int n; vi S, P, W, L; vl M, M2, M3; void print(vi &L1) { cerr << "{"; for (auto i : L1) { cerr << i << ", "; } cerr << "}\n"; } void print(vl &L1) { cerr << "{"; for (auto i : L1) { cerr << i << ", "; } cerr << "}\n"; } ll oinkoink(int p) { if (p == n) return 0; if (M[p] != -1) return M[p]; return M[p] = oinkoink(W[p]) + 1; } ll oinkoinkoink(int p, ll z) { if (p == n) return -1; if (M2[p] != -1) return -1; if (M3[p] != -1) { return M2[p] = z - M3[p]; } M3[p] = z; ll a = oinkoinkoink(L[p], z + P[p]); if (a == -1) { M2[p] = -2; return -1; } if (M2[p] != -1) { return -1; } M2[p] = a; return a; } void init(int N, std::vector<int> s, std::vector<int> p, std::vector<int> w, std::vector<int> l) { n = N; S = s; P = p; W = w; L = l; M = vl(n, -1); M2 = vl(n, -1); for (int i = 0; i < n; i++) oinkoink(i); for (int i = 0; i < n; i++) { M3 = vl(n, -1); oinkoinkoink(i, 0); } /* cerr << "M : "; print(M); cerr << "M2 : "; print(M2); cerr << "M3 : "; print(M3); //*/ return; } ll oink(ll x, ll z) { //cerr << "oink(" << x << ", " << z <<")" << endl; if (x == n) return z; if (z >= S[0]) return z + M[x]*S[0]; if (M2[x] == -2) return oink(L[x], z+P[x]); //cerr << "S[0]-z-1 : " << S[0]-z-1 << ", M2[x] : " << M2[x] << ", ((S[0]-z-1)/M2[x])*M2[x] : " << ((S[0]-z-1)/M2[x])*M2[x] << ", z : " << z << endl; z += ((S[0]-z-1)/M2[x])*M2[x]; return oink(L[x], z + P[x]); } long long simulate(int x, int z) { return oink(x, z); }
#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...