# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
17666 | chatterboy | 막대기 (KOI13_game) | C++14 | 111 ms | 3936 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <cstdio>
#include <cstring>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
#define MAXN 100001
typedef long long ll;
struct Stick {
int t, d;
};
int N, L;
Stick A[MAXN];
map<int,vector<int>> B, C; // t, d
ll cache[MAXN];
ll solve(int p) {
ll &ret = cache[p];
if (ret != -1) return ret;
ret = 0;
vector<int> vB = B[A[p].t];
vector<int> vC = C[A[p].d];
for (int i=0; i<vB.size(); ++i)
if (p!=vB[i] && A[vB[i]].d>A[p].d)
ret = max(ret, solve(vB[i]));
for (int i=0; i<vC.size(); ++i)
if (p!=vC[i] && A[vC[i]].t>A[p].t)
ret = max(ret, solve(vC[i]));
return ret=ret+L+abs(A[p].t-A[p].d);
}
int main() {
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |