Submission #1216949

#TimeUsernameProblemLanguageResultExecution timeMemory
1216949AmirAli_H1Art Class (IOI13_artclass)C++17
54 / 100
59 ms5268 KiB
// 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 timeMemoryGrader output
Fetching results...