CSES - Datatähti 2019 loppu - Results
Submission details
Task:Robotti
Sender:Roope Salmi
Submission time:2019-01-17 16:14:16 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.01 s1details
#20.03 s1details
#30.01 s1details
#40.01 s1details
#50.02 s1details
#60.01 s1details
#70.02 s1details
#80.02 s1details
#90.02 s2details
#100.02 s2details
#110.01 s2details
#120.01 s2details
#130.03 s2details
#140.02 s2details
#150.01 s2details
#160.02 s2details
#170.02 s2details
#180.01 s3details
#190.02 s3details
#200.01 s3details
#210.01 s3details
#220.02 s3details
#230.02 s3details
#240.02 s3details
#250.02 s3details
#260.01 s3details
#270.01 s3details
#280.01 s3details
#290.01 s3details
#300.02 s3details
#310.01 s3details
#320.02 s3details
#330.02 s3details
#340.02 s3details
#350.02 s3details
#360.02 s3details
#370.02 s3details
#380.01 s3details
#390.02 s3details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:3:11: warning: narrowing conversion of 't[i].std::pair<int, int>::first' from 'int' to 'long double' inside { } [-Wnarrowing]
 #define F first
           ^
input/code.cpp:18:20: note: in expansion of macro 'F'
       c[i] = {t[i].F, t[i].S};
                    ^
input/code.cpp:4:11: warning: narrowing conversion of 't[i].std::pair<int, int>::second' from 'int' to 'long double' inside { } [-Wnarrowing]
 #define S second
           ^
input/code.cpp:18:28: note: in expansion of macro 'S'
       c[i] = {t[i].F, t[i].S};
                            ^

Code

#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
const long M = 1e9+7;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
  for (int ti = 0; ti < t; ++ti) {
    int n;
    cin >> n;
    pair<int, int> t[n];
    complex<long double> c[n];
    for (int i = 0; i < n; ++i) {
      cin >> t[i].F >> t[i].S;
      c[i] = {t[i].F, t[i].S};
    }
    if (n == 2) {
      cout << "YES" << "\n";
      continue;
    }
    double lo, hi;
    lo = arg(c[2]-c[1]);
    hi = arg(c[0]-c[1]);
    if (arg((c[2]-c[1])/(c[0]-c[1])) < 0) swap(lo, hi);
    if (lo < 0) { lo += M_PI; }
    if (hi < 0) { hi += M_PI; }
    bool f = 1;
    for (int i = 2; i < n-1; ++i) {
      double clo, chi;
      clo = arg(c[i+1]-c[i]);
      chi = arg(c[i-1]-c[i]);
      if (arg((c[i+1]-c[i])/(c[i-1]-c[i])) < 0) swap(clo, chi);
      if (clo < 0) { clo += M_PI; }
      if (chi < 0) { chi += M_PI; }
      if (lo < hi) {
	if (clo < chi) {
	  lo = min(lo, clo);
	  hi = max(hi, chi);
	} else {
	  if (lo <= chi && chi <= hi && lo <= clo && clo <= hi) {
	    f = 0; break;
	  }
	  if (clo > hi) {
	    lo = clo;
	  } else {
	    hi = chi;
	  }
	}
      } else {
	if (clo < chi) {
	  if (clo <= hi && chi >= lo) {
	    f = 0; break;
	  }
	  if ((clo >= lo && chi >= lo) || (clo <= hi && chi <= hi)) {
	    continue;
	  }
	  if (clo < hi) {
	    hi = chi;
	  } else {
	    lo = clo;
	  }
	} else {
	  if ((clo >= lo && chi >= lo) || (clo <= hi && chi <= hi)) {
	    f = 0; break;
	  }
	  lo = min(lo, clo);
	  hi = max(hi, chi);
	}
      }
    }
    if (f) {
      cout << "YES\n";
    } else {
      cout << "NO\n";
    }
  }
}

Test details

Test 1

Group: 1

Verdict:

input
2 2

correct output
RG
GR

user output
YES
YES

Test 2

Group: 1

Verdict:

input
2 4

correct output
RRRG
GRRR

user output
NO
NO

Test 3

Group: 1

Verdict:

input
2 6

correct output
RRRRRG
GRRRRR

user output
NO
NO

Test 4

Group: 1

Verdict:

input
2 10

correct output
RRRRRRRRRG
GRRRRRRRRR

user output
NO
NO

Test 5

Group: 1

Verdict:

input
2 50

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO

Test 6

Group: 1

Verdict:

input
2 80

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO

Test 7

Group: 1

Verdict:

input
2 98

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO

Test 8

Group: 1

Verdict:

input
2 100

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO

Test 9

Group: 2

Verdict:

input
2 2

correct output
RG
GR

user output
YES
YES

Test 10

Group: 2

Verdict:

input
2 4

correct output
RRRG
GRRR

user output
NO
NO

Test 11

Group: 2

Verdict:

input
2 6

correct output
RRRRRG
GRRRRR

user output
NO
NO

Test 12

Group: 2

Verdict:

input
4 2

correct output
RG
GG
GG
GR

user output
YES
YES
YES
YES

Test 13

Group: 2

Verdict:

input
4 4

correct output
IMPOSSIBLE

user output
NO
NO
NO
NO

Test 14

Group: 2

Verdict:

input
4 6

correct output
RRRRRG
GBGRGG
GGRBRG
GRRBRR

user output
NO
NO
NO
NO

Test 15

Group: 2

Verdict:

input
6 2

correct output
RG
GG
GG
GG
GG
...

user output
YES
YES
YES
YES
YES
...

Test 16

Group: 2

Verdict:

input
6 4

correct output
RRRG
RGBG
RRGG
BBGG
GRBG
...

user output
NO
NO
NO
NO
NO
...

Test 17

Group: 2

Verdict:

input
6 6

correct output
RRRRRG
GBGRBG
GGGBBG
GGGBBG
GGRBRG
...

user output
NO
NO
NO
NO
NO
...

Test 18

Group: 3

Verdict:

input
2 2

correct output
RG
GR

user output
YES
YES

Test 19

Group: 3

Verdict:

input
2 4

correct output
RRRG
GRRR

user output
NO
NO

Test 20

Group: 3

Verdict:

input
2 6

correct output
RRRRRG
GRRRRR

user output
NO
NO

Test 21

Group: 3

Verdict:

input
4 2

correct output
RG
GG
GG
GR

user output
YES
YES
YES
YES

Test 22

Group: 3

Verdict:

input
4 4

correct output
IMPOSSIBLE

user output
NO
NO
NO
NO

Test 23

Group: 3

Verdict:

input
4 6

correct output
RRRRRG
GBGRGG
GGRBRG
GRRBRR

user output
NO
NO
NO
NO

Test 24

Group: 3

Verdict:

input
6 2

correct output
RG
GG
GG
GG
GG
...

user output
YES
YES
YES
YES
YES
...

Test 25

Group: 3

Verdict:

input
6 4

correct output
RRRG
RGBG
RRGG
BBGG
GRBG
...

user output
NO
NO
NO
NO
NO
...

Test 26

Group: 3

Verdict:

input
6 6

correct output
RRRRRG
GBGRBG
GGGBBG
GGGBBG
GGRBRG
...

user output
NO
NO
NO
NO
NO
...

Test 27

Group: 3

Verdict:

input
2 100

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO

Test 28

Group: 3

Verdict:

input
4 20

correct output
RRRRRRRRRRRRRRRRRRRG
GBBBBBBBBBBBBBBBGRGG
GGRRRRRRRRRRRRRRRBRG
GRRRRRRRRRRRRRRRRBRR

user output
NO
NO
NO
NO

Test 29

Group: 3

Verdict:

input
4 100

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO
NO
NO

Test 30

Group: 3

Verdict:

input
10 10

correct output
RRRRRRRRRG
GBGRBBGRBG
GGGBBGGBBG
GGGBBGGBBG
GGGBBGGBBG
...

user output
NO
NO
NO
NO
NO
...

Test 31

Group: 3

Verdict:

input
12 12

correct output
RRRRRRRRRRRG
RGBBGRBBGRBG
RRBGGBBGGBBG
RRBGGBBGGBBG
RRBGGBBGGBBG
...

user output
NO
NO
NO
NO
NO
...

Test 32

Group: 3

Verdict:

input
10 12

correct output
RRRRRRRRRRRG
RGBBGRBBGRBG
RRBGGBBGGBBG
RRBGGBBGGBBG
RRBGGBBGGBBG
...

user output
NO
NO
NO
NO
NO
...

Test 33

Group: 3

Verdict:

input
12 10

correct output
RRRRRRRRRG
GBGRBBGRBG
GGGBBGGBBG
GGGBBGGBBG
GGGBBGGBBG
...

user output
NO
NO
NO
NO
NO
...

Test 34

Group: 3

Verdict:

input
10 90

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO
NO
NO
NO
...

Test 35

Group: 3

Verdict:

input
90 10

correct output
RRRRRRRRRG
GBGRBBGRBG
GGGBBGGBBG
GGGBBGGBBG
GGGBBGGBBG
...

user output
NO
NO
NO
NO
NO
...

Test 36

Group: 3

Verdict:

input
100 100

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO
NO
NO
NO
...

Test 37

Group: 3

Verdict:

input
98 100

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO
NO
NO
NO
...

Test 38

Group: 3

Verdict:

input
100 98

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO
NO
NO
NO
...

Test 39

Group: 3

Verdict:

input
98 98

correct output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
NO
NO
NO
NO
NO
...