結果
| 問題 |
No.849 yuki国の分割統治
|
| コンテスト | |
| ユーザー |
square1001
|
| 提出日時 | 2019-07-05 21:45:41 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,086 bytes |
| コンパイル時間 | 878 ms |
| コンパイル使用メモリ | 86,452 KB |
| 実行使用メモリ | 10,112 KB |
| 最終ジャッジ日時 | 2024-10-06 21:22:55 |
| 合計ジャッジ時間 | 3,085 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 25 WA * 1 |
ソースコード
#include <set>
#include <cmath>
#include <vector>
#include <iostream>
using namespace std;
long long gcd(long long x, long long y) {
if (y == 0) return x;
return gcd(y, x % y);
}
int main() {
cin.tie(0);
ios_base::sync_with_stdio(false);
long long A, B, C, D; int N;
cin >> A >> B >> C >> D >> N;
vector<long long> X(N), Y(N);
for (int i = 0; i < N; ++i) {
cin >> X[i] >> Y[i];
}
if (B * C - A * D != 0) {
set<pair<long long, long long> > d;
for (int i = 0; i < N; ++i) {
long long xc = B * X[i] - A * Y[i];
long long yc = D * X[i] - C * Y[i];
bool xt = false, yt = false;
if (xc < 0) xt = true, xc *= -1;
xc %= abs(B * C - A * D);
if (xt && xc != 0) xc = abs(B * C - A * D) - xc;
if (yc < 0) yt = true, yc *= -1;
yc %= abs(D * A - C * B);
if (yt && yc != 0) yc = abs(D * A - C * B) - yc;
d.insert(make_pair(xc, yc));
}
cout << d.size() << endl;
}
else {
long long gx = gcd(A, C), gy = gcd(B, D);
set<long long> d;
for (int i = 0; i < N; ++i) {
d.insert(gy * X[i] - gx * Y[i]);
}
cout << d.size() << endl;
}
return 0;
}
square1001