結果
問題 | No.2008 Super Worker |
ユーザー | boatmuscles |
提出日時 | 2022-07-15 21:33:52 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 82 ms / 2,000 ms |
コード長 | 920 bytes |
コンパイル時間 | 400 ms |
コンパイル使用メモリ | 48,768 KB |
最終ジャッジ日時 | 2025-01-30 07:31:14 |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 33 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:16:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 16 | scanf("%d", &N); | ~~~~~^~~~~~~~~~ main.cpp:18:37: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 18 | for(int i = 0; i < N; ++i) scanf("%d", A + i); | ~~~~~^~~~~~~~~~~~~ main.cpp:20:37: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 20 | for(int i = 0; i < N; ++i) scanf("%d", B + i); | ~~~~~^~~~~~~~~~~~~
ソースコード
#include<cstdio> #include<numeric> #include<algorithm> #include<atcoder/modint> using namespace std; using namespace atcoder; using Mint = modint1000000007; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rrep(i, n) for (int i = (int)(n)-1; i >= 0; i--) #define rep2(i, a, b) for (int i = (int)a; i < (int)(b); i++) #define rrep2(i, a, b) for (int i = (int)(b)-1; i >= (int)(a); i--) using ll = long long; int main(){ int N; scanf("%d", &N); int A[N]; for(int i = 0; i < N; ++i) scanf("%d", A + i); int B[N]; for(int i = 0; i < N; ++i) scanf("%d", B + i); int order[N]; iota(order,order+N,0); sort(order,order+N,[&](int x, int y){return (ll)A[x]*(B[y]-1) < (ll)A[y]*(B[x]-1);}); Mint answer = 0, level = 1; rep(i, N){ answer += Mint::raw(A[order[i]])*level; level *= Mint::raw(B[order[i]]); } printf("%u\n", answer.val()); return 0; }