# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
856887 | 2023-10-04T19:02:51 Z | andrei_boaca | 던전 (IOI21_dungeons) | C++17 | 83 ms | 277264 KB |
#include "dungeons.h" #include <vector> #include <bits/stdc++.h> //#include "grader.cpp" using namespace std; typedef long long ll; ll s[400005],p[400005],w[400005],l[400005],cost[400005],to[24][400005]; ll n; int dp[25][400005][12]; ll suma[25][400005][12]; int who[25][400005][12]; ll smax=0; void init(int N, std::vector<int> S, std::vector<int> P, std::vector<int> W, std::vector<int> L) { n=N; for(int i=0;i<n;i++) { s[i]=S[i]; smax=max(smax,s[i]*1LL); p[i]=P[i]; w[i]=W[i]; l[i]=L[i]; } w[n]=n; for(int k=0;k<25;k++) { for(int i=0;i<n;i++) { if(s[i]<(1<<k)) { to[k][i]=w[i]; cost[i]=s[i]; } else { bool ok=0; if(k==23) ok=1; to[k][i]=l[i]; cost[i]=p[i]; } suma[k][i][0]=cost[i]; who[k][i][0]=to[k][i]; } cost[n]=0; to[k][n]=n; who[k][n][0]=n; suma[k][n][0]=0; for(int j=1;j<12;j++) { for(int i=0;i<=n;i++) { ll sum=0; ll x=i; for(int c=1;c<=4;c++) { sum+=suma[k][x][j-1]; x=who[k][x][j-1]; } who[k][i][j]=x; suma[k][i][j]=sum; } } for(int i=0;i<n;i++) { if(s[i]>=(1<<k)) dp[k][i][0]=0-s[i]; else dp[k][i][0]=-1e9; } for(int j=1;j<12;j++) { for(int i=0;i<=n;i++) { ll x=i; ll maxim=-1e9; ll sum=0; for(int c=1;c<=4;c++) { ll val=-1e9; if(dp[k][x][j-1]>-1e9) val=min(0LL,dp[k][x][j-1]+sum); maxim=max(maxim,val); assert(maxim<=0); sum+=suma[k][x][j-1]; x=who[k][x][j-1]; } dp[k][i][j]=maxim; } } } } long long simulate(int x, int z) { ll rez=z; int cnt=0; while(x!=n) { cnt++; ll k=0; for(int i=0;i<25;i++) if((1<<i)<rez) k=i; if(k==24) { while(x!=n) { rez+=suma[k][x][11]; x=who[k][x][11]; } continue; } for(int i=11;i>=0;i--) { while(rez+dp[k][x][i]<0) { rez+=suma[k][x][i]; x=who[k][x][i]; } } rez+=s[x]; //assert(x==n||s[x]>=(1<<k)); x=w[x]; } return rez; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 69 ms | 272724 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 83 ms | 277264 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 79 ms | 277076 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 79 ms | 277076 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 79 ms | 277076 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 83 ms | 277264 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |