Codeforce Round #531(Div3)

E:

 

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<string>
 5 #include<queue>
 6 #include<vector>
 7 #include<set>
 8 #include<map>
 9 #include<cmath>
10 #include<algorithm>
11 
12 #define ll long long 
13 #define mem(a,b) memset(a,b,sizeof(a))
14 const int maxn=200005;
15 using namespace std;
16 map<int,int>minn,maxx;
17 int data[maxn];
18 int but[maxn],vis[maxn];
19 int cnt;
20 int mod=998244353;
21 int main()
22 {
23     int n;cin>>n;
24     for(int i=1;i<=n;i++)
25     {
26         scanf("%d",data+i);
27         maxx[data[i]]=i;
28     }
29     int t=1;
30     ll ans=1;
31     for(int i=1;i<=n;i++)
32     {
33         //如果当前的坐标比当前阶梯最右端要靠右,则进入下一个阶梯,ans*2
34         if(i>t)
35         {
36             ans=ans*2%mod;
37         }
38         t=max(t,maxx[data[i]]);   //令t等于新的阶梯的右端
39     }
40     printf("%lld\n",ans);
41     return 0;
42 }

猜你喜欢

转载自www.cnblogs.com/codeoosacm/p/10438918.html
今日推荐