QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#815977 | #9804. Guess the Polygon | xuxin12345 | Compile Error | / | / | C++14 | 3.4kb | 2024-12-15 20:07:19 | 2024-12-15 20:07:19 |
Judging History
This is the latest submission verdict.
- [2024-12-15 20:07:19]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-12-15 20:07:19]
- Submitted
answer
#include <bits/stdc++.h>
using namespace std;
#define max_len 1200
#define int int64_t
struct frac_num
{
int fz, fm;
frac_num() = default;
frac_num(int zz, int mm)
{
fz = zz, fm = mm;
mk_gcd();
}
frac_num(int zz)
{
fz = zz, fm = 1;
}
void mk_gcd()
{
int g = gcd(fz, fm);
fz = fz / g, fm = fm / g;
}
frac_num operator+(const frac_num &r) const
{
return frac_num(fz * r.fm + fm * r.fz, fm * r.fm);
}
frac_num operator-(const frac_num &r) const
{
return frac_num(fz * r.fm - fm * r.fz, fm * r.fm);
}
frac_num operator+(const int &r) const
{
return frac_num(fz + fm * r, fm);
}
frac_num operator-(const int &r) const
{
return frac_num(fz - fm * r, fm);
}
frac_num operator*(const frac_num &r) const
{
return frac_num(fz * r.fz, fm * r.fm);
}
frac_num operator*(const int r) const
{
return frac_num(fz * r, fm);
}
frac_num operator/(const int r) const
{
return frac_num(fz, fm * r);
}
bool operator==(const int r) const
{
return fm == 1 && fz == r;
}
bool operator<(const int r) const
{
return 1.0 * fz / fm < r;
}
bool operator<(const frac_num &r) const
{
return fz * r.fm < fm * r.fz;
}
};
frac_num print_ques(frac_num fn)
{
fn.mk_gcd();
cout << "? " << fn.fz << " " << fn.fm << endl;
int zz, mm;
cin >> zz >> mm;
return frac_num(zz, mm);
}
void print_ans(frac_num fn)
{
fn.mk_gcd();
cout << "! " << fn.fz << " " << fn.fm << endl;
}
int N;
map<int, set<int>> poi_map;
void input()
{
poi_map.clear();
cin >> N;
for (int i = 0; i < N; i++)
{
int x, y;
cin >> x >> y;
poi_map[x].insert(y);
}
}
void sol()
{
input();
// x, [y]
vector<pair<frac_num, vector<int>>> poi_vec;
bool is_y_cnt1 = true;
for (auto [pir_x, pirs] : poi_map)
{
poi_vec.push_back({pir_x, vector<int>()});
for (auto yy : pirs)
{
poi_vec.back().second.push_back(yy);
}
if (pirs.size() > 1)
{
is_y_cnt1 = false;
}
}
int poi_su = poi_vec.size();
frac_num ans = 0;
if (is_y_cnt1 == true)
{
frac_num ans_m2 = 0;
auto last_x = poi_vec.front().first;
auto last_bian_len = frac_num(0, 1);
for (int i = 1; i < poi_su - 1; i++)
{
auto now_x = poi_vec[i].first;
auto now_y_len = print_ques(now_x);
ans_m2 = ans_m2 + (now_y_len + last_bian_len) * (now_x - last_x);
last_bian_len = now_y_len;
last_x = now_x;
}
auto end_x = poi_vec.back().first;
ans_m2 = ans_m2 + (last_bian_len) * (end_x - last_x);
ans = ans_m2 / 2;
}
else
{
auto last_x = poi_vec.front().first;
for (int i = 1; i < poi_su; i++)
{
auto now_x = poi_vec[i].first;
auto mid_x = (last_x + now_x) / 2;
auto now_y_len = print_ques(mid_x);
ans = ans + (now_y_len) * (now_x - last_x);
last_x = now_x;
}
}
print_ans(ans);
}
int32_t main()
{
int T;
cin >> T;
while (T--)
{
sol();
}
}
詳細信息
answer.code: In member function ‘void frac_num::mk_gcd()’: answer.code:22:17: error: ‘gcd’ was not declared in this scope 22 | int g = gcd(fz, fm); | ^~~ answer.code: In function ‘void sol()’: answer.code:101:15: warning: structured bindings only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 101 | for (auto [pir_x, pirs] : poi_map) | ^