제출 #1132955

#제출 시각아이디문제언어결과실행 시간메모리
1132955Szymon_Pilipczuk던전 (IOI21_dungeons)C++20
0 / 100
2 ms4168 KiB
#include <bits/stdc++.h> #include "dungeons.h" using namespace std; long long j[6][25][400001][2]; int n; int s[400000]; int p[400000]; int w[400000]; int l[400000]; vector<long long> t; set<int> e; void init(int nt,vector<int> st,vector<int> pt,vector<int> wt,vector<int> lt) { n = nt; for(int i =0 ;i<n;i++) { s[i] = st[i]; p[i] = pt[i]; w[i] = wt[i]; l[i] = lt[i]; } e.insert(0); for(int i = 0;i<n;i++) { e.insert(s[i]); } for(auto i = e.begin();i != e.end();i++) { t.push_back(*i); } for(int i = 0;i<t.size();i++) { for(int q = 0;q<n;q++) { if(s[q] <= t[i]) { j[i][0][q][0] = w[q]; j[i][0][q][1] = s[q]; } else { j[i][0][q][0] = l[q]; j[i][0][q][1] = p[q]; } } j[i][0][n][0] = n; j[i][0][n][1] = 0; for(int w = 1;w<25;w++) { for(int q = 0;q<=n;q++) { j[i][w][q][0] = j[i][w-1][j[i][w-1][q][0]][0]; j[i][w][q][1] = j[i][w-1][q][1] + j[i][w-1][j[i][w-1][q][0]][1]; } } } t.push_back(1e18); } long long simulate(int x,int zt) { long long z = zt; for(int i = 0;i<t.size()-1;i++) { for(int w = 24;w>=0;w--) { if(j[i][w][x][1]+z < t[i+1]) { z+=j[i][w][x][1]; x = j[i][w][x][0]; } } z+=j[i][0][x][1]; x = j[i][0][x][0]; } return 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...