Submission details
Task:Forest
Sender: >--) ) ) )*>
Submission time:2015-09-16 18:58:20 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#10.05 sdetails
#20.05 sdetails
#30.05 sdetails
#40.06 sdetails
#50.05 sdetails
#60.05 sdetails
#70.06 sdetails
#80.06 sdetails
#90.05 sdetails
#100.06 sdetails
#110.06 sdetails
#120.05 sdetails
#130.05 sdetails
#140.06 sdetails
#150.05 sdetails
#160.05 sdetails
#170.05 sdetails
#180.05 sdetails
#190.05 sdetails
#200.06 sdetails

Code

#include <unordered_set>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
#include <sstream>
#include <fstream>
#include <cassert>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cstdio>
#include <vector>
#include <bitset>
#include <cmath>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>

using namespace std;

#define ll long long
#define si pair<string,int>
#define iii pair<int,ii>
#define vi vector<int>
#define vc vector<char>
#define vs vector<string>
#define msvs map<string,vs>
#define msi map<string,int>
#define mss map<string,int>
#define us unordered_set
#define um unordered_map
#define pq priority_queue
#define pb push_back
#define mp make_pair
#define forall(i,a,b) for (int i=a;i<b;i++)
#define foreach(v,c) for( typeof( (c).begin()) v = (c).begin();  v != (c).end(); ++v)
#define all(a) a.begin(), a.end()
#define in(a,b) ( (b).find(a) != (b).end())
#define fill(a,v) memset(a, v, sizeof a)
#define sz(a) ((int)(a.size()))
#define N (1<<17)
#define M 1000000007
#define I 500000004
#define eps 1e-10

vector<pair<ll,ll>> f;

bool modulo(ll a) {
	if (a < 0) return (abs(a)%2) == 0;
	else return a%2==0;
}

int main()
{
	cin.sync_with_stdio(false);
	int n; cin >> n;
	ll x,y; cin >> x >> y;
	x += 10*10*10*10*10*10;
	y += 10*10*10*10*10*10;
	set<pair<ll,ll>> s;
	for (int i = 0; i < n; i++) {
		ll xi,yi; cin >> xi >> yi;
		xi += 10*10*10*10*10*10;
		yi += 10*10*10*10*10*10;
		xi -= x;
		yi -= y;
		if(xi != 0 && yi != 0) {
			while (modulo(xi) && modulo(yi)) {
				xi /= 2;
				yi /= 2;
			}
		} else if (xi == 0) {
			while (modulo(yi)) yi /= 2;
		} else {
			while (modulo(xi)) xi /= 2;
		}
		s.insert(make_pair(xi,yi));
	}
	cout << s.size() << "\n";
	return 0;
}

Test details

Test 1

Verdict:

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

correct output
117

user output
131

Test 2

Verdict:

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

correct output
124

user output
147

Test 3

Verdict:

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

correct output
132

user output
155

Test 4

Verdict:

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

correct output
97

user output
114

Test 5

Verdict:

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

correct output
124

user output
150

Test 6

Verdict:

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

correct output
134

user output
166

Test 7

Verdict:

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

correct output
98

user output
110

Test 8

Verdict:

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

correct output
109

user output
131

Test 9

Verdict:

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

correct output
98

user output
118

Test 10

Verdict:

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

correct output
86

user output
102

Test 11

Verdict:

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

correct output
1866

user output
1912

Test 12

Verdict:

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

correct output
1891

user output
1952

Test 13

Verdict:

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

correct output
1917

user output
1966

Test 14

Verdict:

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

correct output
1863

user output
1903

Test 15

Verdict:

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

correct output
1932

user output
1971

Test 16

Verdict:

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

correct output
1794

user output
1868

Test 17

Verdict:

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

correct output
1796

user output
1861

Test 18

Verdict:

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

correct output
1797

user output
1870

Test 19

Verdict:

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

correct output
1819

user output
1862

Test 20

Verdict:

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

correct output
1803

user output
1873