結果
問題 | No.2941 Sigma Music Game Score Problem |
ユーザー |
![]() |
提出日時 | 2025-01-15 16:07:14 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 702 ms / 2,500 ms |
コード長 | 4,030 bytes |
コンパイル時間 | 4,644 ms |
コンパイル使用メモリ | 280,368 KB |
実行使用メモリ | 10,912 KB |
最終ジャッジ日時 | 2025-01-15 16:07:30 |
合計ジャッジ時間 | 13,570 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 29 |
ソースコード
//#pragma GCC target("avx2") //#pragma GCC optimize("O3") //#pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> using namespace std; using ll=long long; using ull=unsigned long long; using pii=pair<int,int>; using pll=pair<ll,ll>; template<class T> using vvector=vector<vector<T>>; template<class T> using vvvector=vector<vvector<T>>; template<class T> using vvvvector=vector<vvvector<T>>; #define Vector(type, name, ...) vector<type> name(__VA_ARGS__) #define VVector(type, name, h, ...) \ vector<vector<type>> name(h, vector<type>(__VA_ARGS__)) #define VVVector(type, name, h, w, ...) \ vector<vector<vector<type>>> name( \ h, vector<vector<type>>(w, vector<type>(__VA_ARGS__))) #define VVVVector(type, name, a, b, c, ...) \ vector<vector<vector<vector<type>>>> name( \ a, vector<vector<vector<type>>>( \ b, vector<vector<type>>(c, vector<type>(__VA_ARGS__)))) #define OVERLOAD_REP(_1, _2, _3, _4, name, ...) name #define REP1(n) for (int _ = 0; _ < (int)(n); _++) #define REP2(i,n) for (int i = 0; i < (int)(n); i++) #define REP3(i,l,r) for (int i = (int)(l); i < (int)(r); i++) #define REP4(i,l,r,d) for (int i = (int)(l); (d) > 0 ? i < (int)(r) : i > (int)(r); i += (d)) #define rep(...) OVERLOAD_REP(__VA_ARGS__,REP4,REP3,REP2,REP1)(__VA_ARGS__) #define OVERLOAD_REPll(_1, _2, _3, _4, name, ...) name #define REP1ll(n) for (int _ = 0; _ < (int)(n); _++) #define REP2ll(i,n) for (int i = 0; i < (int)(n); i++) #define REP3ll(i,l,r) for (int i = (int)(l); i < (int)(r); i++) #define REP4ll(i,l,r,d) for (int i = (int)(l); (d) > 0 ? i < (int)(r) : i > (int)(r); i += (d)) #define repll(...) OVERLOAD_REPll(__VA_ARGS__,REP4,REP3,REP2,REP1)(__VA_ARGS__) #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() template<class T> void chmin(T &a,T b){ if(a>b){ a=b; } } template<class T> void chmax(T &a,T b){ if(a<b){ a=b; } } ostream &operator<<(ostream &os, const __int128_t &N) { string retu=""; if(N==0){ retu="0"; } else{ __int128_t NN=N; if(NN<0){ retu+='-'; NN=-NN; } for(;NN>0;NN/=10){ retu+=(char)(NN%10)+'0'; } reverse(retu.begin(),retu.end()); } os<<retu; return os; } template<class T1,class T2> ostream &operator<< (ostream &os, pair<T1,T2> &p){ if(&os==&cerr){return os << "(" << p.first << ", " << p.second << ")";} return os << p.first << " " << p.second; } template <class Ch,class Tr,class Container> basic_ostream<Ch,Tr> &operator<<(basic_ostream<Ch,Tr> &os, const Container &x) { bool first=true; if(&os==&cerr){os<<"[";} for(auto &y:x){ if(&os==&cerr){os<<(first?"":", ")<<y;} else{os<<(first?"":" ")<<y;} first=false; } if(&os==&cerr){os<<"]";} return os; } template <class T, class S, class U> ostream &operator<<(ostream &os, const priority_queue<T, S, U> &pq) { auto _pq = pq; vector<T> retu; while(!empty(_pq)) retu.emplace_back(_pq.top()), _pq.pop(); return os << retu; } vector<size_t> Subsets(const size_t bit){ vector<size_t> subsets; size_t bit_=bit; while(bit_){ subsets.emplace_back(bit_); bit_-=1; bit_&=bit; } subsets.emplace_back(0); reverse(subsets.begin(),subsets.end()); return subsets; } long long pow_mod(long long x,long long n,long long mod){ if(n==0){ return 1LL; } if(n%2==0){ long long p=pow_mod(x,n/2,mod); return p*p%mod; } else{ long long p=pow_mod(x,n/2,mod); p*=p; p%=mod; p*=x; return p%mod; } } int main(){ ll M,N;cin>>M>>N; Vector(ll,X,N+2); X[0]=0; X[N+1]=M+1; rep(m,1,N+1){ cin>>X[m]; } ll mod=998244353,ans=0; rep(n,N+1){ ll d=X[n+1]-X[n]; d%=mod; ans+=d*(d-1)%mod*(2*d-1)%mod; ans%=mod; } ans*=166374059; ans%=mod; cout<<ans<<"\n"; }