結果
問題 |
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; }