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