AIM Tech Round 5 (rated, Div. 1 + Div. 2) D(SET,思维)
Posted ldudxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AIM Tech Round 5 (rated, Div. 1 + Div. 2) D(SET,思维)相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
using namespace std;
const long long mod = 1e9+7;
char s[370007][27];
long long a[370007];
set<long long>st;
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s%lld",s[i],&a[i]);
}
long long tmp=1;
long long ans=1;
long long mn=0,mx=1e18;
st.insert(mn),st.insert(mx);
for(int i=1;i<=n;i++){
if(s[i][1]==‘D‘){
st.insert(a[i]);//扔进set
if(a[i]<=mx&&a[i]>=mn)
tmp++;//最后一个accepted之后的add有tmp种情况,假设有三个ADD(000,001,011,111)0表示BUY吗,1表示SELL,比ADD的个数多1
}
else{
if(a[i]<mn||a[i]>mx)
ans=0;//不符题意,best offer的报价应该在先进的报价范围之内
else if(a[i]!=mn&&a[i]!=mx)
ans*=2,ans%=mod;//可buy可sell
tmp=1;
st.erase(a[i]);//所有的报价都是独一无二的
auto it=st.upper_bound(a[i]);//找到略大于它的,lowerb_bound也行,找寻的位置都是一样的
mx=*it;//范围最大值
mn=*(--it);//范围最小值
}
}
printf("%lld",ans*tmp%mod);
return 0;
}
以上是关于AIM Tech Round 5 (rated, Div. 1 + Div. 2) D(SET,思维)的主要内容,如果未能解决你的问题,请参考以下文章
AIM Tech Round 5 (rated, Div. 1 + Div. 2) BUnnatural Conditions
AIM Tech Round 5 (rated, Div. 1 + Div. 2) CRectangles
AIM Tech Round 5 (rated, Div. 1 + Div. 2) A Find Square