#include "artclass.h"
#include <bits/stdc++.h>
struct pixel {
double r, g, b;
double h, s, l;
pixel() {
r = g = b = h = s = l = 0.0;
}
pixel(int _r, int _g, int _b) {
r = _r / 255.0;
g = _g / 255.0;
b = _b / 255.0;
auto xmax = std::max({r, g, b});
auto xmin = std::min({r, g, b});
auto c = xmax - xmin;
l = (xmax + xmin) / 2;
if (xmax == 0) {
s = 0;
} else {
s = c / xmax;
}
if (c == 0.0) {
h = 0;
} else if (xmax == r) {
h = 60.0 * (fmod(60.0 + ((g - b) / c), 6.0));
} else if (xmax == g) {
h = 60.0 * ((b - r) / c + 2.0);
} else if (xmax == b) {
h = 60.0 * ((r - g) / c + 4.0);
} else {
assert(false);
}
}
};
bool green(int r, int g, int b) {
return (g > 100 && r < 100 && b < 100) || (g > 50 && r < 50 && b < 50);
}
double dist(pixel _a, pixel _b) {
auto r = _a.r - _b.r;
auto g = _a.g - _b.g;
auto b = _a.b - _b.b;
return std::sqrt(r * r + g * g + b * b);
}
double noise(std::vector<pixel> pixels) {
double res = 0;
for (int i = 0; i < pixels.size(); ++i) {
for (int j = i + 1; j < pixels.size(); ++j) {
res += dist(pixels[i], pixels[j]);
}
}
return res;
}
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
std::mt19937 Rand(std::random_device{}());
auto data = new pixel *[H];
for (int i = 0; i < H; ++i) {
data[i] = new pixel[W];
for (int j = 0; j < W; ++j) {
data[i][j] = pixel(R[i][j], G[i][j], B[i][j]);
}
}
int numG = 0;
for (int i = 0; i < H; ++i) {
for (int j = 0; j < W; ++j) {
numG += (std::abs(data[i][j].h - 120.0) < 10.0) && (data[i][j].l < 0.8) && (data[i][j].l > 0.2);
}
}
std::map<int, int> diffs;
for (int i = 0; i < H; ++i) {
for (int j = 0; j < W; ++j) {
if (data[i][j].l < 0.2 || data[i][j].l > 0.8) continue;
int num = std::floor(data[i][j].h / 10);
diffs[num]++;
}
}
int numlarge = 0;
for (auto [a, b]: diffs) {
//#ifdef LOCAL
// std::cout << "Colour " << a << ": " << b << std::endl;
//#endif
if (b > H * W / 4) numlarge++;
}
if (numG > 2100) return 2;
int numW = 0;
for (int i = 0; i < H; ++i) {
for (int j = 0; j < W; ++j) {
if (data[i][j].l > 0.8) numW++;
}
}
if (numW > H * W / 4) return 1;
double Noise = 0.0;
int rad = 10;
for (int sample = 0; sample < 100; ++sample) {
int r = Rand() % H;
int c = Rand() % W;
while (r - rad < 0 || r + rad >= H) {
r = Rand() % H;
}
while (c - rad < 0 || c + rad >= W) {
c = Rand() % W;
}
std::vector<pixel> pixels;
for (int i = r - rad; i <= r + rad; ++i) {
for (int j = c - rad; j <= c + rad; ++j) {
pixels.push_back(data[i][j]);
}
}
Noise += noise(pixels);
}
if (Noise >= 1000000) return 3;
return 4;
}
Compilation message
artclass.cpp: In function 'double noise(std::vector<pixel>)':
artclass.cpp:46:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<pixel>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
46 | for (int i = 0; i < pixels.size(); ++i) {
| ~~^~~~~~~~~~~~~~~
artclass.cpp:47:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<pixel>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
47 | for (int j = i + 1; j < pixels.size(); ++j) {
| ~~^~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
58 ms |
10208 KB |
Output is correct |
2 |
Correct |
42 ms |
13988 KB |
Output is correct |
3 |
Correct |
63 ms |
13308 KB |
Output is correct |
4 |
Incorrect |
44 ms |
14416 KB |
Output isn't correct |
5 |
Incorrect |
34 ms |
12372 KB |
Output isn't correct |
6 |
Incorrect |
34 ms |
12884 KB |
Output isn't correct |
7 |
Incorrect |
45 ms |
14420 KB |
Output isn't correct |
8 |
Correct |
75 ms |
14676 KB |
Output is correct |
9 |
Correct |
42 ms |
6748 KB |
Output is correct |
10 |
Correct |
34 ms |
12420 KB |
Output is correct |
11 |
Incorrect |
41 ms |
13136 KB |
Output isn't correct |
12 |
Correct |
28 ms |
10064 KB |
Output is correct |
13 |
Correct |
70 ms |
14860 KB |
Output is correct |
14 |
Incorrect |
77 ms |
15272 KB |
Output isn't correct |
15 |
Correct |
67 ms |
13648 KB |
Output is correct |
16 |
Incorrect |
67 ms |
14172 KB |
Output isn't correct |
17 |
Incorrect |
37 ms |
12624 KB |
Output isn't correct |
18 |
Incorrect |
72 ms |
14672 KB |
Output isn't correct |
19 |
Incorrect |
42 ms |
13648 KB |
Output isn't correct |
20 |
Incorrect |
71 ms |
14916 KB |
Output isn't correct |
21 |
Correct |
70 ms |
14420 KB |
Output is correct |
22 |
Incorrect |
53 ms |
17992 KB |
Output isn't correct |
23 |
Incorrect |
46 ms |
15696 KB |
Output isn't correct |
24 |
Correct |
57 ms |
10032 KB |
Output is correct |
25 |
Correct |
72 ms |
15700 KB |
Output is correct |
26 |
Correct |
70 ms |
13908 KB |
Output is correct |
27 |
Incorrect |
41 ms |
13392 KB |
Output isn't correct |
28 |
Correct |
63 ms |
11696 KB |
Output is correct |
29 |
Incorrect |
73 ms |
15408 KB |
Output isn't correct |
30 |
Correct |
51 ms |
17576 KB |
Output is correct |
31 |
Incorrect |
69 ms |
13836 KB |
Output isn't correct |
32 |
Correct |
45 ms |
15372 KB |
Output is correct |
33 |
Correct |
52 ms |
10072 KB |
Output is correct |
34 |
Incorrect |
47 ms |
15960 KB |
Output isn't correct |
35 |
Correct |
43 ms |
14928 KB |
Output is correct |
36 |
Correct |
42 ms |
14676 KB |
Output is correct |
37 |
Correct |
69 ms |
14932 KB |
Output is correct |
38 |
Incorrect |
61 ms |
12124 KB |
Output isn't correct |
39 |
Correct |
72 ms |
15184 KB |
Output is correct |
40 |
Incorrect |
70 ms |
14476 KB |
Output isn't correct |
41 |
Incorrect |
74 ms |
14932 KB |
Output isn't correct |
42 |
Correct |
74 ms |
16208 KB |
Output is correct |
43 |
Incorrect |
83 ms |
18004 KB |
Output isn't correct |
44 |
Correct |
66 ms |
14420 KB |
Output is correct |
45 |
Correct |
76 ms |
15188 KB |
Output is correct |
46 |
Incorrect |
69 ms |
14672 KB |
Output isn't correct |
47 |
Incorrect |
67 ms |
13608 KB |
Output isn't correct |
48 |
Correct |
47 ms |
15332 KB |
Output is correct |
49 |
Correct |
61 ms |
11560 KB |
Output is correct |
50 |
Incorrect |
70 ms |
13652 KB |
Output isn't correct |
51 |
Correct |
61 ms |
12476 KB |
Output is correct |
52 |
Incorrect |
43 ms |
14932 KB |
Output isn't correct |
53 |
Correct |
76 ms |
14932 KB |
Output is correct |
54 |
Incorrect |
75 ms |
14924 KB |
Output isn't correct |
55 |
Correct |
69 ms |
14928 KB |
Output is correct |
56 |
Incorrect |
56 ms |
10848 KB |
Output isn't correct |
57 |
Correct |
51 ms |
8540 KB |
Output is correct |
58 |
Correct |
73 ms |
14676 KB |
Output is correct |
59 |
Correct |
48 ms |
16976 KB |
Output is correct |
60 |
Correct |
52 ms |
8792 KB |
Output is correct |
61 |
Correct |
29 ms |
11092 KB |
Output is correct |
62 |
Correct |
74 ms |
15188 KB |
Output is correct |
63 |
Correct |
56 ms |
10180 KB |
Output is correct |
64 |
Incorrect |
70 ms |
14932 KB |
Output isn't correct |
65 |
Incorrect |
82 ms |
17904 KB |
Output isn't correct |
66 |
Incorrect |
36 ms |
11860 KB |
Output isn't correct |
67 |
Correct |
51 ms |
17488 KB |
Output is correct |
68 |
Correct |
65 ms |
13136 KB |
Output is correct |
69 |
Incorrect |
68 ms |
14164 KB |
Output isn't correct |
70 |
Correct |
54 ms |
17500 KB |
Output is correct |
71 |
Incorrect |
70 ms |
14376 KB |
Output isn't correct |
72 |
Correct |
80 ms |
15632 KB |
Output is correct |
73 |
Correct |
39 ms |
5464 KB |
Output is correct |
74 |
Incorrect |
43 ms |
14160 KB |
Output isn't correct |
75 |
Correct |
44 ms |
14872 KB |
Output is correct |
76 |
Incorrect |
47 ms |
15832 KB |
Output isn't correct |
77 |
Correct |
50 ms |
17492 KB |
Output is correct |
78 |
Correct |
50 ms |
8276 KB |
Output is correct |
79 |
Correct |
63 ms |
12484 KB |
Output is correct |
80 |
Incorrect |
80 ms |
17440 KB |
Output isn't correct |
81 |
Correct |
75 ms |
15960 KB |
Output is correct |
82 |
Correct |
48 ms |
16724 KB |
Output is correct |
83 |
Correct |
58 ms |
17332 KB |
Output is correct |
84 |
Correct |
33 ms |
12372 KB |
Output is correct |
85 |
Correct |
77 ms |
16732 KB |
Output is correct |
86 |
Incorrect |
51 ms |
16596 KB |
Output isn't correct |
87 |
Correct |
47 ms |
15076 KB |
Output is correct |
88 |
Incorrect |
71 ms |
14996 KB |
Output isn't correct |
89 |
Incorrect |
44 ms |
15184 KB |
Output isn't correct |
90 |
Correct |
72 ms |
14812 KB |
Output is correct |
91 |
Incorrect |
68 ms |
13872 KB |
Output isn't correct |
92 |
Incorrect |
69 ms |
14548 KB |
Output isn't correct |
93 |
Correct |
57 ms |
11612 KB |
Output is correct |
94 |
Correct |
53 ms |
17628 KB |
Output is correct |
95 |
Correct |
62 ms |
11856 KB |
Output is correct |
96 |
Incorrect |
64 ms |
13136 KB |
Output isn't correct |
97 |
Correct |
50 ms |
17164 KB |
Output is correct |
98 |
Correct |
63 ms |
11860 KB |
Output is correct |
99 |
Incorrect |
81 ms |
17748 KB |
Output isn't correct |
100 |
Correct |
53 ms |
17748 KB |
Output is correct |
101 |
Incorrect |
68 ms |
13908 KB |
Output isn't correct |
102 |
Incorrect |
70 ms |
14720 KB |
Output isn't correct |