結果
| 問題 |
No.849 yuki国の分割統治
|
| コンテスト | |
| ユーザー |
leaf1415
|
| 提出日時 | 2019-07-05 22:53:39 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,190 bytes |
| コンパイル時間 | 851 ms |
| コンパイル使用メモリ | 72,160 KB |
| 実行使用メモリ | 11,264 KB |
| 最終ジャッジ日時 | 2024-10-06 22:47:47 |
| 合計ジャッジ時間 | 4,316 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 21 WA * 5 |
ソースコード
#include <iostream>
#include <map>
#include <vector>
#include <queue>
#include <utility>
#include <set>
#include <stdlib.h>
#define llint long long
#define inf 1e18
using namespace std;
typedef pair<llint, llint> P;
llint a, b, c, d;
llint n;
llint x[100005], y[100005];
llint gcd(llint a, llint b)
{
if(b == 0) return a;
return gcd(b, a%b);
}
int main(void)
{
cin >> a >> b >> c >> d;
cin >> n;
llint det = a*d-b*c;
for(int i = 1; i <= n; i++) cin >> x[i] >> y[i];
set<P> S;
if(det == 0){
llint gx = gcd(a, c), gy = (b, d);
//cout << gx << " " << gy << endl;
for(int i = 1; i <= n; i++){
llint bunsi = gx*y[i]-gy*x[i], bunbo = gx;
//cout << bunsi << " " << bunbo << endl;
llint g = gcd(abs(bunsi), abs(bunbo));
if(bunsi == 0 || bunbo == 0) g = 1;
S.insert(make_pair(bunsi/g, bunbo/g));
}
cout << S.size() << endl;
return 0;
}
for(int i = 1; i <= n; i++){
det = abs(det);
llint bunsi1 = x[i]*d-y[i]*c, bunsi2 = a*y[i]-x[i]*b;
if(bunsi1 < 0) bunsi1 = det - abs(bunsi1)%det;
if(bunsi2 < 0) bunsi2 = det - abs(bunsi2)%det;
bunsi1 %= det, bunsi2 %= det;
S.insert(make_pair(bunsi1, bunsi2));
}
cout << S.size() << endl;
return 0;
}
leaf1415