結果

問題 No.849 yuki国の分割統治
コンテスト
ユーザー vjudge1
提出日時 2026-05-19 21:55:23
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++17 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,158 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,800 ms
コンパイル使用メモリ 291,336 KB
実行使用メモリ 10,752 KB
最終ジャッジ日時 2026-05-19 21:55:29
合計ジャッジ時間 6,332 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3 WA * 1
other AC * 17 WA * 9
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include<bits/stdc++.h>
#include<bits/extc++.h>
#define int long long
#define inf 0x3f3f3f3f3f3f3f3f
#define maxn 1234567
#define eps 1e-7
#define mod 1000000007
#define Mod 998244353
#define f(i,a,b) for(int i=a;i<=b;i++)
#define r(i,a,b) for(int i=a;i>=b;i--) 
#define fx(i,a,b,x) for(int i=a;i<=b;i+=x)
#define rx(i,a,b,x) for(int i=a;i>=b;i-=x) 
using namespace std;
using namespace __gnu_cxx;
using namespace __gnu_pbds;
int T;
int a,b,c,d,n,x[maxn],y[maxn],s,t;
map<pair<int,int>,int>mp;
int gcd(int a,int b){
	return b==0?a:gcd(b,a%b);
}
int lcm(int a,int b){
	return a/gcd(a,b)*b;
}
void Swap(int &a,int &b){
	a^=b^=a^=b;
	return;
}
void solve(){
	scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&n);
	f(i,1,n)scanf("%lld%lld",&x[i],&y[i]);
	if(a*d==b*c){
		a=gcd(a,c),b=gcd(b,d);
		if(!a){
			Swap(a,b);
			f(i,1,n)Swap(x[i],y[i]);
		}
		f(i,1,n)mp[make_pair(x[i]%a,y[i]*a-x[i]*b)]++;
	}
	else{
		f(i,1,n){
			s=(x[i]*d%abs(a*d-b*c)-y[i]*c%abs(a*d-b*c)+mod)%mod;
			t=(y[i]*a%abs(a*d-b*c)-x[i]*b%abs(a*d-b*c)+mod)%mod;
			mp[make_pair(s,t)]++;
		}
	}
	printf("%lld\n",mp.size());
}
signed main(){
	T=1;
//	scanf("%lld",&T);
	while(T--)solve();
	return 0;
}
0