| Task: | Pravokutni |
| Sender: | henrikaalto |
| Submission time: | 2019-07-31 15:17:38 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 100 |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | details |
| #2 | ACCEPTED | 0.01 s | details |
| #3 | ACCEPTED | 0.01 s | details |
| #4 | ACCEPTED | 0.06 s | details |
| #5 | ACCEPTED | 0.08 s | details |
| #6 | ACCEPTED | 0.10 s | details |
| #7 | ACCEPTED | 0.14 s | details |
| #8 | ACCEPTED | 0.17 s | details |
| #9 | ACCEPTED | 0.24 s | details |
| #10 | ACCEPTED | 0.23 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:50:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for( int j = 0, k; j < rays.size(); j = k ) {
~~^~~~~~~~~~~~~
input/code.cpp:54:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for( k = j; k < rays.size() && angle_eq( rays[j], rays[k] ); ++k )
~~^~~~~~~~~~~~~
input/code.cpp:25:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf( "%d", &n );
~~~~~^~~~~~~~~~~~
input/code.cpp:26:38: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
for( int i = 0; i < n; ++i ) scanf( "%d%d", &x[i], &y[i] );
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~Code
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;
#define MAX 1500
struct ray {
long long dx, dy;
int quadrant;
void rotate90() {
long long tmp = dx; dx = dy; dy = -tmp;
quadrant = (quadrant+1)%4;
}
};
bool angle_lt ( const ray &A, const ray &B ) { return A.dy*B.dx < B.dy*A.dx; }
bool angle_eq ( const ray &A, const ray &B ) { return A.dy*B.dx == B.dy*A.dx; }
int n;
int x[MAX], y[MAX];
int main( void ) {
scanf( "%d", &n );
for( int i = 0; i < n; ++i ) scanf( "%d%d", &x[i], &y[i] );
int solution = 0;
for( int i = 0; i < n; ++i ) {
vector<ray> rays;
for( int j = 0; j < n; ++j ) {
if( i == j ) continue;
ray R;
R.quadrant = 0;
R.dx = x[j]-x[i];
R.dy = y[j]-y[i];
while( !(R.dx > 0 && R.dy >= 0) ) R.rotate90();
rays.push_back( R );
}
sort( rays.begin(), rays.end(), angle_lt );
int count[4];
for( int j = 0, k; j < rays.size(); j = k ) {
count[0] = count[1] = count[2] = count[3] = 0;
for( k = j; k < rays.size() && angle_eq( rays[j], rays[k] ); ++k )
++count[rays[k].quadrant];
solution += count[0] * count[1];
solution += count[1] * count[2];
solution += count[2] * count[3];
solution += count[3] * count[0];
}
}
printf( "%d\n", solution );
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 11
2 1 7 7 0 0 -8 -7 ... |
| correct output |
|---|
| 8 |
| user output |
|---|
| 8 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 77
25 -19 -13 -11 -2 -24 -19 4 ... |
| correct output |
|---|
| 8082 |
| user output |
|---|
| 8082 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 219
2 -8 859 -3283 33 -49 2 -45 ... |
| correct output |
|---|
| 2533 |
| user output |
|---|
| 2533 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 751
-841 1308 -1603 -1143 657 -330 1565 1551 ... |
| correct output |
|---|
| 180 |
| user output |
|---|
| 180 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 887
-318 -111 -51 -42 -60 30 0 15 ... |
| correct output |
|---|
| 656682 |
| user output |
|---|
| 656682 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 979
-19978 14584 -19978 13600 22840 -19949 -19712 14218 ... |
| correct output |
|---|
| 217863 |
| user output |
|---|
| 217863 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 1240
509503063 -256406432 -487207177 245187456 -487207659 245185046 -392411792 -779758123 ... |
| correct output |
|---|
| 261035 |
| user output |
|---|
| 261035 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 1419
908609234 -961461577 908607806 -961461577 908608142 -961460058 908607491 -961461577 ... |
| correct output |
|---|
| 471204 |
| user output |
|---|
| 471204 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 1494
17337298 165736671 41562836 397321778 286305326 -29949683 392177969 -41024755 ... |
| correct output |
|---|
| 2984 |
| user output |
|---|
| 2984 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 1500
99601355 -35091687 142757373 -376358953 -233911476 -88725398 -3360747 -162507391 ... |
| correct output |
|---|
| 192311 |
| user output |
|---|
| 192311 |
