結果
| 問題 |
No.1726 [Cherry 3rd Tune B] ジャマイカビアポン
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-10-29 23:23:02 |
| 言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2,754 ms / 3,000 ms |
| コード長 | 2,625 bytes |
| コンパイル時間 | 3,658 ms |
| コンパイル使用メモリ | 132,840 KB |
| 最終ジャッジ日時 | 2025-01-25 09:41:56 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 39 |
ソースコード
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <set>
#include <queue>
#include <tuple>
#include <map>
#define se second
#define fi first
using namespace std;
using ll = long long;
using ull = unsigned long long;
#define rep(i,n) for(long long i = 0; i < (int)n; i++)
#define FOR(i, m, n) for(long long i = (m);i < (n); ++i)
#define ALL(obj) (obj).begin(),(obj).end()
#define SPEED cin.tie(0);ios::sync_with_stdio(false);
template<class T> using V = vector<T>;
template<class T, class U> using P = pair<T, U>;
template<class T> using PQ = priority_queue<T>;
template<class T> using PQR = priority_queue<T,vector<T>,greater<T>>;
void print(V<ll> ar) {
for(auto x: ar)cout << x << " " ;
cout << endl;
}
ll gcd(ll a, ll b) {
if (a<b)return gcd(b,a);
if (b==0)return a;
return gcd(b, a%b);
}
ll mpow(ll x, ll n, ll p) {
ll r = 1;
while (n>0) {
if (n%2) {
r*=x;
r%=p;
}
x *= x;
x %= p;
n/=2;
}
return r;
}
const ll mod = 998244353;
V<P<ll,int>> facts(ll n) {
V<P<ll,int>> res;
if (n==1)return res;
for(int x = 2; x*x<=n; x++) {
if (n%x==0) {
int p = 0;
while (n%x==0) {
p+=1;
n/=x;
}
res.emplace_back(P<ll,int>(x, p));
}
}
if (n!=1) {
res.emplace_back(P<ll,int>(n, 1));
}
return res;
}
int main()
{
int n,m;cin >> n >> m;
V<ll> p(n);rep(i, n)cin >> p[i];
V<ll> a(n),b(n),c(m),d(m);
rep(i, n)cin >> a[i] >> b[i];
rep(i, m)cin >> c[i] >> d[i];
ll ans = 0;
map<P<ll, ll>, ll> mp;
rep(i, n)rep(j, m) {
mp[P<ll,ll>(a[i]-c[j], b[i]-d[j])] += p[i];
}
for(auto x = mp.begin(); x!=mp.end() ; x++) {
ans = max(ans, x->second);
}
rep(i, n) {
a[i] = -a[i];
}
mp = map<P<ll,ll>,ll>();
rep(i, n)rep(j, m) {
mp[P<ll,ll>(a[i]-c[j], b[i]-d[j])] += p[i];
}
for(auto x = mp.begin(); x!=mp.end() ; x++) {
ans = max(ans, x->second);
}
rep(i, n) {
b[i] = -b[i];
}
mp = map<P<ll,ll>,ll>();
rep(i, n)rep(j, m) {
mp[P<ll,ll>(a[i]-c[j], b[i]-d[j])] += p[i];
}
for(auto x = mp.begin(); x!=mp.end() ; x++) {
ans = max(ans, x->second);
}
rep(i, n) {
a[i] = -a[i];
}
mp = map<P<ll,ll>,ll>();
rep(i, n)rep(j, m) {
mp[P<ll,ll>(a[i]-c[j], b[i]-d[j])] += p[i];
}
for(auto x = mp.begin(); x!=mp.end() ; x++) {
ans = max(ans, x->second);
}
cout << ans << endl;
}