結果
問題 | No.1546 [Cherry 2nd Tune D] 思ったよりも易しくない |
ユーザー |
![]() |
提出日時 | 2021-06-11 21:59:26 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 387 ms / 2,000 ms |
コード長 | 941 bytes |
コンパイル時間 | 4,036 ms |
コンパイル使用メモリ | 251,548 KB |
最終ジャッジ日時 | 2025-01-22 05:49:50 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 53 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:58:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 58 | scanf("%lld %lld",&T[i],&V[i]); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>#include <bits/stdc++.h>#include <atcoder/all>using namespace atcoder;using mint = modint998244353;using namespace std;#define rep(i,n) for (int i = 0; i < (n); ++i)#define Inf 100000000000000000mint Nsum = 0;mint f0(mint n){return n;}mint f1(mint n){mint ret = n;ret *= n+1;ret /= 2;return ret;}mint f2(mint n){mint ret = n;ret *= n+1;ret *= n*2+1;ret /= 6;return ret;}mint f3(mint n){mint ret = f1(n);ret *= ret;return ret;}mint get(mint n){mint ret = -f3(n);ret += Nsum * f2(n);ret += (Nsum+1) * f1(n);return ret;}mint get(mint L,mint R){return get(R) - get(L-1);}int main(){int N;cin>>N;vector<long long> T(N),V(N);rep(i,N){scanf("%lld %lld",&T[i],&V[i]);Nsum += T[i];}mint cur = 0;mint ans = 0;rep(i,N){ans += get(cur+1,cur+T[i]) * V[i];cur += T[i];}ans /= 2;cout<<ans.val()<<endl;return 0;}