// In the name of Allah
#include <bits/stdc++.h>
#include "artclass.h"
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef complex<ld> cld;
#define all(x) (x).begin(),(x).end()
#define len(x) ((ll) (x).size())
#define F first
#define S second
#define pb push_back
#define sep ' '
#define endl '\n'
#define Mp make_pair
#define kill(x) cout << x << '\n', exit(0)
#define set_dec(x) cout << fixed << setprecision(x);
#define file_io(x,y) freopen(x, "r", stdin); freopen(y, "w", stdout);
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int n, m, D = 2;
const int maxn = 500 + 4;
const int maxs = maxn * maxn;
int p[maxs], sz[maxs], num;
int GI(int i, int j) {
return (i * m + j);
}
int get(int a) {
return (p[a] == a) ? a : p[a] = get(p[a]);
}
void merge(int a, int b) {
a = get(a); b = get(b);
if (a == b) return ;
if (sz[a] > sz[b]) swap(a, b);
p[a] = b; sz[b] += sz[a]; sz[a] = 0; num--;
}
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
n = H; m = W; num = n * m;
ld valx = 0, vald = 0;
iota(p, p + (n * m), 0); fill(sz, sz + (n * m), 1);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
valx += R[i][j] + G[i][j] + B[i][j];
vald += (abs(R[i][j] - G[i][j]) + abs(R[i][j] - B[i][j]) + abs(G[i][j] - B[i][j]));
for (int i1 : {i - 1, i, i + 1}) {
for (int j1 : {j - 1, j, j + 1}) {
if (i1 >= 0 && i1 < n && j1 >= 0 && j1 < m) {
if (abs(R[i][j] - R[i1][j1]) <= D && abs(G[i][j] - G[i1][j1]) <= D && abs(B[i][j] - B[i1][j1]) <= D) {
merge(GI(i, j), GI(i1, j1));
}
}
}
}
}
}
ld val = ((ld) num) / (n * m);
valx /= (3 * n * m); vald /= (3 * n * m);
if (val >= 0.6) {
if (valx < 100) return 2;
else return 3;
}
else {
if (vald < 50) return 1;
else return 4;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |