結果
| 問題 | No.3409 How Many Gift Boxes? |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-12-16 02:13:03 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 157 ms / 2,000 ms |
| コード長 | 997 bytes |
| 記録 | |
| コンパイル時間 | 1,939 ms |
| コンパイル使用メモリ | 209,452 KB |
| 実行使用メモリ | 18,048 KB |
| 最終ジャッジ日時 | 2025-12-17 21:18:48 |
| 合計ジャッジ時間 | 6,687 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 38 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
#define REP(i,n) for(ll i=0;i<ll(n);i++)
const ll MOD=1000000007;
int main(){
cin.tie(nullptr); ios_base::sync_with_stdio(false);
ll i,j;
ll H,W;
cin >> H >> W;
vector<ll> A(H),B(W),C;
REP(i,H) cin >> A[i];
REP(i,W) cin >> B[i];
sort(B.begin(),B.end());
C=B;
for(i=1;i<W;i++){
C[i]+=C[i-1];
C[i]%=MOD;
}
map<ll,ll> ma,mb;
REP(i,H) ma[A[i]]++;
REP(i,W) mb[B[i]]++;
ll MN=0;
for(auto x:ma){
if(mb.count(x.first)==0){
MN+=(x.first)*(x.second);
MN%=MOD;
}
else{
MN+=(x.first)*max(x.second,mb[x.first]);
MN%=MOD;
}
}
for(auto x:mb){
if(ma.count(x.first)==0){
MN+=(x.first)*(x.second);
MN%=MOD;
}
}
cout << MN << endl;
ll MX=0;
REP(i,H){
ll x=lower_bound(B.begin(),B.end(),A[i])-B.begin();
MX+=(W-x)*A[i];
MX%=MOD;
if(x>=1){
MX+=C[x-1];
MX%=MOD;
}
}
cout << MX << endl;
return 0;
}