| Task: | Letter Game |
| Sender: | Ukkonen Fan Club |
| Submission time: | 2018-05-26 15:56:07 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | RUNTIME ERROR |
| test | verdict | time | |
|---|---|---|---|
| #1 | RUNTIME ERROR | 0.02 s | details |
| #2 | RUNTIME ERROR | 0.02 s | details |
| #3 | RUNTIME ERROR | 0.01 s | details |
| #4 | RUNTIME ERROR | 0.01 s | details |
| #5 | RUNTIME ERROR | 0.01 s | details |
| #6 | RUNTIME ERROR | 0.01 s | details |
| #7 | RUNTIME ERROR | 0.01 s | details |
| #8 | RUNTIME ERROR | 0.01 s | details |
| #9 | RUNTIME ERROR | 0.01 s | details |
| #10 | RUNTIME ERROR | 0.01 s | details |
| #11 | RUNTIME ERROR | 0.01 s | details |
| #12 | RUNTIME ERROR | 0.01 s | details |
| #13 | RUNTIME ERROR | 0.01 s | details |
| #14 | RUNTIME ERROR | 0.02 s | details |
| #15 | RUNTIME ERROR | 0.01 s | details |
| #16 | RUNTIME ERROR | 0.01 s | details |
| #17 | RUNTIME ERROR | 0.01 s | details |
| #18 | RUNTIME ERROR | 0.02 s | details |
| #19 | RUNTIME ERROR | 0.01 s | details |
Code
#include <bits/stdc++.h>
#define x real()
#define Y imag()
#define F first
#define S second
const double SIDE_THRESHOLD = 5;
int D2=300;
double MA=15.0 /180.0*3.14159265358979;
using namespace std;
char t[111][111];
typedef long long ll;
typedef complex<double> co;
long long d2(pair<int, int> a, pair<int, int> b){
return (a.F-b.F)*(a.F-b.F)+(a.S-b.S)*(a.S-b.S);
}
pair<int, int> md(pair<int, int> a, pair<int, int> b){
return {(a.F+b.F)/2, (a.S+b.S)/2};
}
double dotP(pair<int, int> a, pair<int, int> b){
return a.F*b.F+a.S*b.S;
}
double angle(pair<int, int> a, pair<int, int> b){
return acos(dotP(a,b)/sqrt(dotP(a,a)*dotP(b,b)));
}
bool ok(pair<int, int> a, pair<int, int> b, pair<int, int> c){
pair<int, int> v1={b.F-a.F, b.S-a.S};
pair<int, int> v2={c.F-b.F, c.S-b.S};
return abs(angle(v1, v2))>MA;
}
void solve(){
int n=100;
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
cin>>t[i][j];
}
}
vector<pair<int, int> > dh;
vector<pair<int, int> > uh;
for (int i=0;i<n;++i){
bool f=0;
int l=0;
for (int j=0;j<n;++j){
if (t[i][j]=='1'){
if (!f) uh.push_back({i,j});
f=1;
l=j;
}
}
if (f){
dh.push_back({i,l});
}
}
vector<pair<int, int> > dsh;
vector<pair<int, int> > ush;
dsh.push_back(dh[0]);
ush.push_back(uh[0]);
for (auto v:dh){
if (dsh.size()==1){
if (d2(v, dsh.back())<D2/2) continue;
dsh.push_back(v);
}else{
if (!ok(dsh[dsh.size()-2], dsh[dsh.size()-1], v)) dsh.pop_back();
if (d2(v, dsh.back())<D2) continue;
dsh.push_back(v);
}
}
for (auto v:uh){
if (ush.size()==1) ush.push_back(v);
else{
if (!ok(ush[ush.size()-2], ush[ush.size()-1], v)) ush.pop_back();
if (d2(v, ush.back())<D2) continue;
ush.push_back(v);
}
}
int minus=0;
if (dsh[0]!=ush[0]){
if (!ok(dsh[0], ush[0], ush[1]) || !ok(ush[0], dsh[0], dsh[1]) || d2(ush[0], dsh[0])<D2/2) ++minus;
}
if (dsh.back()!=ush.back()){
if (!ok(dsh.back(), ush.back(), ush[ush.size()-2]) || !ok(ush.back(), dsh.back(), dsh[dsh.size()-2]) || d2(ush.back(), dsh.back())<D2/2) ++minus;
}
set<pair<int, int> > k;
for (auto v:dsh) k.insert(v);
for (auto v:ush) k.insert(v);
// for (auto n:k) cout << n.F << ", " << n.S << endl;
cout << k.size()-minus << "\n";
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);
int t;
cin >> t;
for (int i=0;i<t;++i)solve();
}
Test details
Test 1
Verdict: RUNTIME ERROR
| input |
|---|
| 1 .. |
| correct output |
|---|
| 0 |
| user output |
|---|
| (empty) |
Test 2
Verdict: RUNTIME ERROR
| input |
|---|
| 2 A..B |
| correct output |
|---|
| 0 |
| user output |
|---|
| (empty) |
Test 3
Verdict: RUNTIME ERROR
| input |
|---|
| 2 B..A |
| correct output |
|---|
| -1 |
| user output |
|---|
| (empty) |
Test 4
Verdict: RUNTIME ERROR
| input |
|---|
| 3 AA..BB |
| correct output |
|---|
| 0 |
| user output |
|---|
| (empty) |
Test 5
Verdict: RUNTIME ERROR
| input |
|---|
| 3 AB..AB |
| correct output |
|---|
| -1 |
| user output |
|---|
| (empty) |
Test 6
Verdict: RUNTIME ERROR
| input |
|---|
| 3 AB..BA |
| correct output |
|---|
| 2 ABBA.. A..ABB |
| user output |
|---|
| (empty) |
Test 7
Verdict: RUNTIME ERROR
| input |
|---|
| 3 BA..AB |
| correct output |
|---|
| 2 ..BAAB AAB..B |
| user output |
|---|
| (empty) |
Test 8
Verdict: RUNTIME ERROR
| input |
|---|
| 3 BA..BA |
| correct output |
|---|
| -1 |
| user output |
|---|
| (empty) |
Test 9
Verdict: RUNTIME ERROR
| input |
|---|
| 3 BB..AA |
| correct output |
|---|
| 2 ..BBAA AABB.. |
| user output |
|---|
| (empty) |
Test 10
Verdict: RUNTIME ERROR
| input |
|---|
| 100 BBABAABBBAAAAABBBBBBAAAABAAABA... |
| correct output |
|---|
| 140 ..ABAABBBAAAAABBBBBBAAAABAAABA... |
| user output |
|---|
| (empty) |
Test 11
Verdict: RUNTIME ERROR
| input |
|---|
| 100 AABBABBAAABABBBBBBBBAABABAAAAB... |
| correct output |
|---|
| 142 AA..ABBAAABABBBBBBBBAABABAAAAB... |
| user output |
|---|
| (empty) |
Test 12
Verdict: RUNTIME ERROR
| input |
|---|
| 100 AAAAABAABBBABAABAAABABBAAAABAA... |
| correct output |
|---|
| 134 AAAAA..ABBBABAABAAABABBAAAABAA... |
| user output |
|---|
| (empty) |
Test 13
Verdict: RUNTIME ERROR
| input |
|---|
| 100 BBBAAAABAABABAABAABBBABBABABAA... |
| correct output |
|---|
| 142 ..BAAAABAABABAABAABBBABBABABAA... |
| user output |
|---|
| (empty) |
Test 14
Verdict: RUNTIME ERROR
| input |
|---|
| 100 BABBBAAAAABABAAABBBAABBABABBBB... |
| correct output |
|---|
| 138 ..BBBAAAAABABAAABBBAABBABABBBB... |
| user output |
|---|
| (empty) |
Test 15
Verdict: RUNTIME ERROR
| input |
|---|
| 100 ABAAAAABBAAAAAAAAAABABAABBBBBB... |
| correct output |
|---|
| 126 A..AAAABBAAAAAAAAAABABAABBBBBB... |
| user output |
|---|
| (empty) |
Test 16
Verdict: RUNTIME ERROR
| input |
|---|
| 100 ABBBBBABBABABABBBABAABAAAABBAA... |
| correct output |
|---|
| 128 A..BBBABBABABABBBABAABAAAABBAA... |
| user output |
|---|
| (empty) |
Test 17
Verdict: RUNTIME ERROR
| input |
|---|
| 100 BAAABBABBAAAABABAAABABABBAAABA... |
| correct output |
|---|
| 139 ..AABBABBAAAABABAAABABABBAAABA... |
| user output |
|---|
| (empty) |
Test 18
Verdict: RUNTIME ERROR
| input |
|---|
| 100 BBBBBABBAAABBAABBBBBABABABAABA... |
| correct output |
|---|
| 133 ..BBBABBAAABBAABBBBBABABABAABA... |
| user output |
|---|
| (empty) |
Test 19
Verdict: RUNTIME ERROR
| input |
|---|
| 100 BABBBBBBABBBABBBBBBAABABAAABAA... |
| correct output |
|---|
| 128 ..BBBBBBABBBABBBBBBAABABAAABAA... |
| user output |
|---|
| (empty) |
