Submission details
Task:Forest
Sender:Przemyslaw Uznanski
Submission time:2015-09-16 17:00:17 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.05 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.05 sdetails
#4ACCEPTED0.06 sdetails
#5ACCEPTED0.06 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.05 sdetails
#8ACCEPTED0.05 sdetails
#9ACCEPTED0.07 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.06 sdetails
#12ACCEPTED0.07 sdetails
#13ACCEPTED0.05 sdetails
#14ACCEPTED0.05 sdetails
#15ACCEPTED0.05 sdetails
#16ACCEPTED0.05 sdetails
#17ACCEPTED0.06 sdetails
#18ACCEPTED0.05 sdetails
#19ACCEPTED0.05 sdetails
#20ACCEPTED0.05 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:62:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
                   ^
input/code.cpp:65:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&X,&Y);
                        ^
input/code.cpp:69:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&x,&y);
                            ^

Code

#include <cstdio>
#include <queue>
#include <algorithm>
#include <vector>
#include <set>
#include <cstdlib>

#define all(x) (x).begin(),x.end()

#define pb push_back
#define mp make_pair
#define x1 first
#define x2 second.first
#define x3 second.second
#define trip(a,b,c) mp(a,mp(b,c))

using namespace std;
const int inf = 1000000007;

int qrt(int x,int y)
{
    if(y >= 0)
    {
        if(x >= 0)
            return 0;
        else
            return 1;
    }
    else
    {
        if(x >= 0)
            return 3;
        else
            return 2;
    }
}


int cmp(const pair<int,int>& s1, const pair<int,int>& s2)
{

        int q1 = qrt(s1.first,s1.second);
        int q2 = qrt(s2.first,s2.second);
        if(q1 != q2)
            return q1 < q2;

        return ((long long)s1.first)*s2.second - ((long long)s1.second)*s2.first > 0;
                 }

struct less_than_key
{
        inline bool operator() (const pair<int,int>& s1, const pair<int,int>& s2)
        {
            return cmp(s1,s2);
        }
};


int main()
{
    int n;
    scanf("%d",&n);
    vector<pair<int,int> > inp(n);
    int X,Y;
    scanf("%d%d",&X,&Y);
    for(int i=0;i<n;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        x -= X;
        y -= Y;
        inp[i] = make_pair(x,y);
    }
    sort(all(inp),less_than_key());
    
    int ans = 1;
    for(int i=1;i<n;i++)
        if(cmp(inp[i-1],inp[i]))
            ans++;
    printf("%d\n",ans);

}

Test details

Test 1

Verdict: ACCEPTED

input
152
391446 44026
391450 44026
391448 44028
391450 44028
...

correct output
117

user output
117

Test 2

Verdict: ACCEPTED

input
167
-395738 -130738
-395745 -130742
-395739 -130735
-395746 -130731
...

correct output
124

user output
124

Test 3

Verdict: ACCEPTED

input
183
200778 460834
200784 460841
200769 460836
200773 460830
...

correct output
132

user output
132

Test 4

Verdict: ACCEPTED

input
130
223758 419977
223753 419974
223762 419974
223759 419983
...

correct output
97

user output
97

Test 5

Verdict: ACCEPTED

input
168
375864 397759
375855 397764
375855 397757
375866 397758
...

correct output
124

user output
124

Test 6

Verdict: ACCEPTED

input
187
-23941 284266
-113941 -30734
-113941 689266
-203941 329266
...

correct output
134

user output
134

Test 7

Verdict: ACCEPTED

input
127
260079 -413943
440079 -53943
575079 36057
530079 -773943
...

correct output
98

user output
98

Test 8

Verdict: ACCEPTED

input
144
411083 460318
366083 145318
771083 865318
411083 685318
...

correct output
109

user output
109

Test 9

Verdict: ACCEPTED

input
135
-460235 328576
-145235 553576
-910235 688576
-280235 58576
...

correct output
98

user output
98

Test 10

Verdict: ACCEPTED

input
113
390086 -474936
-59914 -609936
480086 -879936
345086 -204936
...

correct output
86

user output
86

Test 11

Verdict: ACCEPTED

input
1921
221773 -175524
-75227 -72024
-75227 -72023
527773 -22524
...

correct output
1866

user output
1866

Test 12

Verdict: ACCEPTED

input
1960
-166870 -301876
4130 -45376
4129 -45376
4130 -45377
...

correct output
1891

user output
1891

Test 13

Verdict: ACCEPTED

input
1983
490468 217759
85468 357259
791968 631759
76468 150259
...

correct output
1917

user output
1917

Test 14

Verdict: ACCEPTED

input
1910
75208 56523
340708 452523
340708 452522
-356792 430023
...

correct output
1863

user output
1863

Test 15

Verdict: ACCEPTED

input
1984
-178901 -113059
-381401 12941
-381400 12941
-381401 12940
...

correct output
1932

user output
1932

Test 16

Verdict: ACCEPTED

input
2000
-318296 48998
-322618 47556
-335584 43230
-300516 32354
...

correct output
1794

user output
1794

Test 17

Verdict: ACCEPTED

input
2000
-376251 158360
-373641 158980
-386177 169482
-387909 155698
...

correct output
1796

user output
1796

Test 18

Verdict: ACCEPTED

input
2000
4141 -447930
22987 -450556
22988 -450556
8931 -452688
...

correct output
1797

user output
1797

Test 19

Verdict: ACCEPTED

input
2000
-83018 -8575
-84778 -5615
-84778 -5616
-84778 -5614
...

correct output
1819

user output
1819

Test 20

Verdict: ACCEPTED

input
2000
-199417 -261684
-204449 -244760
-219545 -193988
-183653 -255010
...

correct output
1803

user output
1803