結果
| 問題 | No.2275 →↑↓ | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2023-04-21 23:08:38 | 
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) | 
| 結果 | 
                                WA
                                 
                             | 
| 実行時間 | - | 
| コード長 | 893 bytes | 
| コンパイル時間 | 1,521 ms | 
| コンパイル使用メモリ | 168,408 KB | 
| 実行使用メモリ | 6,824 KB | 
| 最終ジャッジ日時 | 2024-11-06 16:34:04 | 
| 合計ジャッジ時間 | 2,940 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 4 WA * 9 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
#define REP(i,n) for(int i=0;i<int(n);i++)
const ll MOD=998244353;
ll a[200010];
ll extgcd(ll a,ll b,ll& x,ll& y){
	ll g;
	if(b!=0){
		g=extgcd(b,a%b,y,x);
		y-=(a/b)*x;
	}else{
                g=a;
		x=1; y=0;
	}
	  return g;
}
ll mod_inverse(ll a,ll m){
    ll x,y;
    extgcd(a,m,x,y);
    return (x%m+m)%m;
}
int main(void){
	cin.tie(nullptr);  ios_base::sync_with_stdio(false);
	int i,j,k;
	int N;
	cin >> N;
	for(i=1;i<=N;i++) cin >> a[i];
	ll ans=a[1];
	a[0]=1;
	for(i=2;i<=N;i++){
		if(a[i]>=a[i-1]){
			if(i==N){
				ans=ans*min(a[i],a[i-1]);
				ans%=MOD;
			}else{
			ans=a[i]*ans;
		    ans%=MOD;
			}
		}else{
			ll v=mod_inverse(a[i-1],MOD);
			ans=ans*v;
			ans%=MOD;
			ans=ans*a[i-2];
			ans%=MOD;
			ans=ans*a[i];
			ans%=MOD;
		}
	}
	cout << ans << endl;
	return 0;
}
            
            
            
        