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<bits/stdc++.h>
using namespace std;
#define ll long long
#define pld pair<long double, int>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pb push_back
#define ff first
#define ss second
#define SZ(x) ((int)(x).size())
#define ld long double
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int add_and(vector<int> Ns);
int add_or(vector<int> Ns);
int add_xor(vector<int> Ns);
int add_not(int N);
int H, W;
bool valid(int x, int y){
return (x >= 0 && x < H && y >= 0 && y < W);
}
map<pair<pii, pii>, int> m;
bool already(int i, int j, int i2, int j2){
return (m.count({{i, j}, {i2, j2}}) || m.count({{i2, j2}, {i, j}}));
}
void construct_network(int H, int W, int K){
::H = H, ::W = W;
vector<int> all;
int cnt = 0;
for(int i = 0; i < H; i++){
for(int j = 0; j < W; j++){
for(int k = 0; k <= K; k++){
int i2 = i + k;
int j2 = j + K - k;
if(valid(i2, j2) && !already(i, j, i2, j2)){
vector<int> v(2);
v[0] = W*i + j;
v[1] = W*i2 + j2;
add_and(v);
all.pb(H*W+cnt);
cnt++;
m[{{i, j}, {i2, j2}}] = 1;
}
i2 = i + k;
j2 = j - (K - k);
if(valid(i2, j2) && !already(i, j, i2, j2)){
vector<int> v(2);
v[0] = W*i + j;
v[1] = W*i2 + j2;
add_and(v);
all.pb(H*W+cnt);
cnt++;
m[{{i, j}, {i2, j2}}] = 1;
}
i2 = i - k;
j2 = j + K - k;
if(valid(i2, j2) && !already(i, j, i2, j2)){
vector<int> v(2);
v[0] = W*i + j;
v[1] = W*i2 + j2;
add_and(v);
all.pb(H*W+cnt);
cnt++;
m[{{i, j}, {i2, j2}}] = 1;
}
i2 = i - k;
j2 = j - (K - k);
if(valid(i2, j2) && !already(i, j, i2, j2)){
vector<int> v(2);
v[0] = W*i + j;
v[1] = W*i2 + j2;
add_and(v);
all.pb(H*W+cnt);
cnt++;
m[{{i, j}, {i2, j2}}] = 1;
}
}
}
}
add_or(all);
}
# | 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... |