# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
876328 | Halfjuice | 디지털 회로 (IOI22_circuit) | C++17 | 14 ms | 10224 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <vector>
using namespace std;
long modPow(long b, long e, long m)
{
b = b%m;
long r = 1;
while (e>0) {
if (e%2 == 1) {
r = (r*b) % m;
}
b = (b*b)%m;
e >>= 1;
}
return r;
}
#define MOD 1000002022
typedef struct _Node {
_Node* parent;
vector<_Node*> children;
int internalNodeCount;
long contribCount;
void initAny() {
this->internalNodeCount = 0;
this->contribCount = 0;
for (auto it=children.begin(); it!=children.end(); it++) {
(*it)->initAny();
if ((*it)->children.size() > 0) {
internalNodeCount += (*it)->internalNodeCount+1;
}
}
internalNodeCount += 1;
}
long searchPathUp(bool start, _Node* child) {
long res = 1;
if (!start) {
res = modPow(2, internalNodeCount-1-child->internalNodeCount, MOD);
}
if (parent) {
res = (res*parent->searchPathUp(false, this)) % MOD;
}
return res;
}
void initLeaf() {
if (this->children.size() == 0) {
contribCount = parent->searchPathUp(true, this);
}
}
} Node;
vector<Node> nodes;
vector<int> state;
long cur;
int n, m;
void init(int N, int M, vector<int> P, vector<int> A) {
n = N;
m = M;
nodes.empty();
for (int i=0; i<N+M; i++) {
nodes.push_back(move(Node()));
if (P[i] == -1) {
nodes[i].parent = 0;
} else {
nodes[i].parent = &nodes[P[i]];
nodes[P[i]].children.push_back(&nodes[i]);
}
}
for (int i=0; i<N+M; i++) {
nodes[i].initAny();
}
for (int i=N; i<N+M; i++) {
nodes[i].initLeaf();
}
state = A;
cur = 0;
for (int i=0; i<M; i++) {
cur = (cur + nodes[N+i].contribCount*state[i]) % MOD;
}
}
int count_ways(int L, int R) {
for (int i=L; i<R; i++) {
if (state[i]) {
state[i] = 0;
cur = (cur - nodes[n+i].contribCount) % MOD;
} else {
state[i] = 1;
cur = (cur + nodes[n+i].contribCount) % MOD;
}
}
if (cur < 0) {
cur = cur + MOD;
}
return cur;
}
컴파일 시 표준 에러 (stderr) 메시지
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |