이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
//#include "grader.cpp"
#include "vision.h"
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
#define in(x) freopen(x, "r", stdin)
#define out(x) freopen(x, "w", stdout)
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("fast-math")
#pragma GCC optimize("no-stack-protector")
#define F first
#define S second
#define pb push_back
#define N +200500
#define M ll(1e9 + 7)
#define sz(x) (int)x.size()
#define re return
#define oo ll(1e9)
#define el '\n'
#define Max_A int(1e9)
//#define el endl
#define pii pair <int, int>
#define piii pair <int, pair <int, int> >
#define psi pair <string, int>
#define err ld(1e-9)
#define Max_S int(3e6)
#define last(x) (x).back()
#define all(x) (x).begin(), (x).end()
#define allr(x) (x).rbegin(), (x).rend()
#define arr_all(x, n) (x + 1), (x + 1 + n)
#define vi vector<int>
using namespace std;
//using namespace __gnu_pbds;
//typedef tree <int, null_type, less_equal <int> , rb_tree_tag, tree_order_statistics_node_update> ordered_set;
typedef long long ll;
typedef long double ld;
void construct_network(int n, int m, int k)
{
int kol = 0, i, j, a, b;
vi vec;
if (k == 1)
{
for (i = 0; i < n ; i += 2)
for (j = 0; j < m; j += 2)
{
vi instr;
if (i < n - 1 && j < m - 1)
{
instr.pb(i * m + j);
instr.pb(i * m + j + 1);
instr.pb((i + 1) * m + j);
instr.pb((i + 1) * m + j + 1);
}
else
{
instr.pb(i * m + j);
if (i + 1 < n) instr.pb((i + 1) * m + j);
if (j + 1 < m) instr.pb(i * m + j + 1);
}
add_or(instr);
vec.pb(n * m + (kol++));
}
add_or(vec);
return;
}
if ((n > 10 || m > 10) && (n != 1 && m != 1))
{
int i = 0;
while (k >= 0 && i < n)
{
vi instr;
if (k < m)
{
instr.pb(0);
instr.pb(i * m + k);
add_and(instr);
vec.pb(n * m + kol);
kol++;
}
i++;
k--;
}
add_or(vec);
return;
}
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
for (a = i; a < n; a++)
for (b = 0; b < m; b++)
{
if (abs(i - a) + abs(j - b) != k)
continue;
// cerr << i << " " << j << " " << a << " " << b << el;
vi instr;
instr.pb(i * m + j);
instr.pb(a * m + b);
add_and(instr);
vec.pb(n * m + kol);
kol++;
}
add_or(vec);
return;
}
//int main()
//{
// srand(time(0));
// cout.precision(3);
// cout << fixed;
// ios_base::sync_with_stdio(0);
// iostream::sync_with_stdio(0);
// ios::sync_with_stdio(0);
// cin.tie(NULL);
// cout.tie(NULL);
//
//// in("input.txt");
//// out("output.txt");
//
//
//}
/*
4 4
0110
0000
1101
1100
*/
# | 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... |