CSES - HIIT Open 2018 - Results
Test results
testverdicttime
#10.08 sdetails
#20.08 sdetails
#30.09 sdetails
#40.12 sdetails
#50.09 sdetails
#60.09 sdetails
#70.09 sdetails
#80.08 sdetails

### Compiler report

```input/code.cpp: In function 'void solvaa()':
input/code.cpp:74:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < normals.size(); i++) {
~~^~~~~~~~~~~~~~~~
input/code.cpp:85:19: warning: division by zero [-Wdiv-by-zero]
cout << 1 / 0;
~~^~~```

### Code

```#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

bool image[110][110];

bool is_edge(int ox, int oy) {
if (!image[ox][oy]) {
return false;
}

for (int x = -1; x <= 1; x++) {
for (int y = -1; y <= 1; y++) {
if (!image[ox+x][oy+y]) { return true; }
}
}

return false;
}

float normal(int ox, int oy) {

float dx = 0;
float dy = 0;

for (int x = -4; x <= 4; x++) {
for (int y = -4; y <= 4; y++) {
if (x == 0 && y == 0) {continue;}
if (image[ox+x][oy+y]) {
float l = sqrt(x*x + y*y);
if (l > 4) { continue; }
float nx = x / l;
float ny = y / l;
dx += nx;
dy += ny;
}
}
}
//cout << dy << ' ' << dx << endl;
//cout << dy << ' ' << dx << ' ' << atan2(dy, dx) << endl;
return atan2(dy, dx);
}

void solvaa() {
for (int x = 0; x < 100; x++) {
for (int y = 0; y < 100; y++) {
char tmp;
cin >> tmp;
image[x+5][y+5] = ('1' == tmp);
}
}

vector<float> normals;

for (int x = 0; x < 100; x++) {
for (int y = 0; y < 100; y++) {
if (is_edge(x+5, y+5)) {
normals.push_back(normal(x+5,y+5));
}
}
}

int sivut = 0;

float pi = 3.141592;

float vs = 0.2;

for (float dir = -pi; dir < pi; dir += vs) {
int count = 0;
for (int i = 0; i < normals.size(); i++) {
if(abs(dir-normals[i]) < vs/2) { count++; }
}

if (count > 3) {
sivut++;
dir += 0.4;
}
}

if(sivut < 3){
cout << 1 / 0;
}

cout << sivut << endl;
}

int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
solvaa();
}
}
```

### Test details

#### Test 1

Verdict:

input
100
000000000000000000000000000000...

correct output
3
3
3
3
4
...

user output
3
3
3
3
4
...

#### Test 2

Verdict:

input
100
000000000000000000000000000000...

correct output
3
4
4
4
3
...

user output
3
4
4
5
3
...

#### Test 3

Verdict:

input
100
000000000000000000000000000000...

correct output
3
3
3
3
4
...

user output
3
3
3
4
5
...

#### Test 4

Verdict:

input
100
000000000000000000000000000000...

correct output
3
3
3
4
3
...

user output
3
3
3
4
3
...

#### Test 5

Verdict:

input
100
000000000000000000000000000000...

correct output
3
4
3
3
4
...

user output
3
4
3
3
4
...

#### Test 6

Verdict:

input
100
000000000000000000000000000000...

correct output
4
3
4
4
4
...

user output
4
3
4
4
4
...

#### Test 7

Verdict:

input
100
000000000000000000000000000000...

correct output
4
4
3
3
3
...

user output
5
4
3
3
3
...

#### Test 8

Verdict:

input
100
000000000000000000000000000000...

correct output
3
3
3
3
3
...

user output
3
3
3
3
3
...