//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#include "vision.h"
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/rope>
#define mem(a,v) memset((a), (v), sizeof (a))
#define enl printf("\n")
#define case(t) printf("Case #%d: ", (t))
#define ni(n) scanf("%d", &(n))
#define nl(n) scanf("%I64d", &(n))
#define nai(a, n) for (int i = 0; i < (n); i++) ni(a[i])
#define nal(a, n) for (int i = 0; i < (n); i++) nl(a[i])
#define pri(n) printf("%d\n", (n))
#define prl(n) printf("%I64d\n", (n))
#define pii pair<int, int>
#define pil pair<int, long long>
#define pll pair<long long, long long>
#define vii vector<pii>
#define vil vector<pil>
#define vll vector<pll>
#define vi vector<int>
#define vl vector<long long>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef cc_hash_table<int,int,hash<int>> ht;
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> oset;
const double pi = acos(-1);
const int MOD = 1e9 + 7;
const int INF = 1e9 + 7;
const int MAXN = 4e3 + 5;
const double eps = 1e-9;
vi diag1[MAXN], diag2[MAXN];
int H, W, arr1[MAXN], arr2[MAXN];
int get(int i, int j) {
if (i < 0 || j < 0 || H <= i || W <= j) return -1;
return i*W + j;
}
void construct_network(int H, int W, int K) {
vi Ns;
int cnt = H*W;
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
diag1[i+j].pb(get(i,j));
diag2[i-j+W-1].pb(get(i,j));
}
}
for (int i = 0; i <= (H-1) + (W-1); i++) {
if (diag1[i].empty()) continue;
arr1[i] = cnt;
Ns.clear();
for (int j: diag1[i])
Ns.pb(j);
if (i) Ns.pb(cnt-1);
add_xor(Ns);
cnt++;
}
for (int i = 0; i <= (H-1) + (W-1); i++) {
if (diag2[i].empty()) continue;
arr2[i] = cnt;
Ns.clear();
for (int j: diag2[i])
Ns.pb(j);
if (i) Ns.pb(cnt-1);
add_xor(Ns);
cnt++;
}
vi tmp[2];
for (int k = K; k <= K+1; k++) {
tmp[k-K].clear();
for (int i = 0; i + k-1 <= (H-1) + (W-1); i++) {
Ns.clear();
for (int j = 0; j < k; j++)
Ns.pb(arr1[i+j]);
add_and(Ns);
tmp[k-K].pb(cnt++);
Ns.clear();
for (int j = 0; j < k; j++)
Ns.pb(arr2[i+j]);
add_and(Ns);
tmp[k-K].pb(cnt++);
}
}
add_or(tmp[0]);
add_or(tmp[1]);
add_xor({cnt,cnt+1});
}
/*int main() {
return 0;
}
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
504 KB |
WA in grader: Invalid index |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
504 KB |
WA in grader: Invalid index |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
504 KB |
WA in grader: Invalid index |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
504 KB |
WA in grader: Invalid index |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
504 KB |
WA in grader: Invalid index |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
504 KB |
WA in grader: Invalid index |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
4 ms |
1016 KB |
WA in grader: Invalid index |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
504 KB |
WA in grader: Invalid index |
2 |
Halted |
0 ms |
0 KB |
- |