Submission #838508

#TimeUsernameProblemLanguageResultExecution timeMemory
838508thimote75Toy Train (IOI17_train)C++14
5 / 100
4 ms724 KiB
#include "train.h"
#include <bits/stdc++.h>

using namespace std;

using idata = vector<int>;
using bdata = vector<bool>;

idata controller, charger;
int N, M;

bdata n0, n1;

idata who_wins(idata _controller, idata _charger, idata u, idata v) {
	N = _controller.size(); M = u.size();

	controller = _controller;
	charger    = _charger;

    n0.resize(N);
    n1.resize(N);

    for (int i = 0; i < M; i ++) {
        if (v[i] == u[i] + 1) n0[u[i]] = 1;
        else n1[u[i]] = 1;
    }

    idata dp(N, 0);

    for (int i = N - 1; i >= 0; i --) {
        bool right = n0[i] == 1;
        bool self  = n1[i] == 1;
        
        idata L;
        if (right) L.push_back(dp[i + 1]);
        if (self)  L.push_back(charger[i]);

        if (controller[i] == 1) {
            int s = 0;
            for (int u : L) s += u;
            dp[i] = min(1, s);
        } else {
            int m = 1e9;
            for (int u : L) m = min(m, u);
            dp[i] = m;
        }
    }
	
	return dp;
}
#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...