Task: | Euclidean Geometry |
Sender: | Karhukopla |
Submission time: | 2018-05-26 13:28:10 +0300 |
Language: | C++ |
Status: | READY |
Result: | WRONG ANSWER |
test | verdict | time | |
---|---|---|---|
#1 | WRONG ANSWER | 0.07 s | details |
#2 | WRONG ANSWER | 0.07 s | details |
#3 | WRONG ANSWER | 0.07 s | details |
#4 | WRONG ANSWER | 0.08 s | details |
#5 | WRONG ANSWER | 0.07 s | details |
#6 | WRONG ANSWER | 0.09 s | details |
#7 | WRONG ANSWER | 0.07 s | details |
#8 | WRONG ANSWER | 0.06 s | details |
Compiler report
input/code.cpp: In function 'int solve()': input/code.cpp:38:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i=0; i<q.size(); ++i){ ~^~~~~~~~~ input/code.cpp:40:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int j=i+1; j<q.size(); ++j){ ~^~~~~~~~~
Code
#include <bits/stdc++.h> #define ll long long #define lll __int128 #define pii pair<int, int> #define M 1000000007 #define N 101 #define PB push_back #define F first #define S second using namespace std; char t[N][N]; int solve(){ int x1=N, y1=N, x2=0, y2=0; for(int i=0; i<100; ++i) { for(int j=0; j<100; ++j) { cin >> t[i][j]; if(t[i][j] == '1') { x1=min(x1, i); x2=max(x2, i); y1=min(y1, j); y2=max(y2, j); } } } vector<pair<int,int>> q; for(int i=x1; i<=x2; ++i){ if(t[i][y1]=='1' && (t[i-1][y1]=='0'||t[i+1][y1] == '0')) q.PB({i, y1}); if(t[i][y2]=='1' && (t[i-1][y2]=='0'||t[i+1][y2] == '0')) q.PB({i, y2}); }for(int i=y1; i<=y2; ++i){ if(t[x1][i]=='1' && (t[x1][i-1]=='0'||t[x1][i+1] == '0')) q.PB({x1, i}); if(t[x2][i]=='1' && (t[x2][i-1]=='0'||t[x2][i+1] == '0')) q.PB({x2, i}); } vector<pair<int,int>> sivut; vector<int> z(10); for(int i=0; i<q.size(); ++i){ if(z[i]) continue; for(int j=i+1; j<q.size(); ++j){ int a = q[i].F - q[j].F, b = q[i].S - q[j].S; if(a*a+b*b < 100) { z[j] = 1; continue; } sivut.PB({i, j}); } } if(sivut.size() > 3) return 4; for(pair<int,int> p : sivut){ int a = p.F, b = p.S; int x = (q[a].F + q[b].F)/2, y = (q[a].S + q[b].S)/2; vector<int> w(2); for(int i=x-3; i<=x+3; ++i){ for(int j=y-3; j<=y+3; ++j){ if(t[i][j] == '1') w[1] = 1; else w[2] = 1; } } if(w[1] + w[2] == 1){ return 4; } } if(sivut.size() == 3) return 3; pair<int,int> pist = {x1, y2}; int dist = 0; for(int i=x1; i<=x2; ++i){ for(int j=0; j<100; ++j){ if(t[i][j] == '0') continue; int d = abs((x1-i)*(y2-j) - (x2-i)*(y1-j)); if(d > dist){ dist = d; pist = {i, j}; } } } int a = sivut[0].F, b = sivut[0].S; int x = (q[a].F + pist.F)/2, y = (q[a].S + pist.S)/2; vector<int> w(2); for(int i=x-3; i<=x+3; ++i){ for(int j=y-3; j<=y+3; ++j){ if(t[i][j] == '1') w[1] = 1; else w[2] = 1; } } if(w[1] + w[2] == 1){ return 4; } x = (q[b].F + pist.F)/2, y = (q[b].S + pist.S)/2; w[0] = w[1] = 0; for(int i=x-3; i<=x+3; ++i){ for(int j=y-3; j<=y+3; ++j){ if(t[i][j] == '1') w[1] = 1; else w[2] = 1; } } if(w[1] + w[2] == 1){ return 4; } return 3; } int main () { ll t; cin >> t; while(t--) cout << solve() << "\n"; } /** AAU YBA BTY */
Test details
Test 1
Verdict: WRONG ANSWER
input |
---|
100 000000000000000000000000000000... |
correct output |
---|
3 3 3 3 4 ... |
user output |
---|
4 4 4 4 4 ... Truncated |
Test 2
Verdict: WRONG ANSWER
input |
---|
100 000000000000000000000000000000... |
correct output |
---|
3 4 4 4 3 ... |
user output |
---|
4 4 4 4 4 ... Truncated |
Test 3
Verdict: WRONG ANSWER
input |
---|
100 000000000000000000000000000000... |
correct output |
---|
3 3 3 3 4 ... |
user output |
---|
4 4 4 4 4 ... Truncated |
Test 4
Verdict: WRONG ANSWER
input |
---|
100 000000000000000000000000000000... |
correct output |
---|
3 3 3 4 3 ... |
user output |
---|
4 4 4 4 4 ... Truncated |
Test 5
Verdict: WRONG ANSWER
input |
---|
100 000000000000000000000000000000... |
correct output |
---|
3 4 3 3 4 ... |
user output |
---|
4 4 4 4 4 ... Truncated |
Test 6
Verdict: WRONG ANSWER
input |
---|
100 000000000000000000000000000000... |
correct output |
---|
4 3 4 4 4 ... |
user output |
---|
4 4 4 4 4 ... Truncated |
Test 7
Verdict: WRONG ANSWER
input |
---|
100 000000000000000000000000000000... |
correct output |
---|
4 4 3 3 3 ... |
user output |
---|
4 4 4 4 4 ... Truncated |
Test 8
Verdict: WRONG ANSWER
input |
---|
100 000000000000000000000000000000... |
correct output |
---|
3 3 3 3 3 ... |
user output |
---|
4 4 4 4 4 ... Truncated |