LYK有一个栈,众所周知的是这个数据结构的特性是后进先出的。

LYK感觉这样子不太美妙,于是它决定在这个前提下将其改进,也就是说,每次插入元素时,可以在栈顶或者栈底插入,删除元素时,只能在栈顶删除。
LYK想知道每次执行完操作后当前栈中元素的最大值是多少。

第一行一个数n表示操作次数。
接下来n行,每行两个数a。若a<=1,则接下来输入一个数b。
若a=0,则在栈顶插入一个数b。
若a=1,则在栈底插入一个数b。
若a=2,则在栈顶删除一个数。

每次操作后,输出当前栈中元素的最大值是多少。
保证任意时刻栈中至少含有一个数。

由于操作数实在太多了。
于是你可以采取这种方式读入所有操作。
读入8个参数n,A,B,C,x0,a,b,MOD。 0<=A,B,C<=100000,A+B+C>0,0<=x0,a,b<=10^9,1<=MOD<=10^9,1<=n<=10000000。
有xi=(xi−1∗a+b)%MOD


对于第i次操作,若xi%(A+B+C)<A或者当前栈中元素<=1,则a=0,且b=xi。若A<=xi%(A+B+C)<A+B,则a=1,且b=xi,若A+B<=xi%(A+B+C),则a=2。

输出可能很大,只需输出将所有答案的总和对1e9+7取模后的结果即可。

 
样例解释:
对应的xi:1 4 0 2 1
对应的操作:
0 1
0 4
0 0
2
1 1
 
对应的答案:
1
4
4
4
4
Input
一行8个参数,n,A,B,C,x0,a,b,MOD
Output
一行表示答案总和对1e9+7取模后的结果
Input示例
5 1 1 1 2 2 2 5
Output示例
17

模仿的这里

 
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e7+;
const int P=1e9+;
int n,a[N],b[N];
int q[N*],head,tail,st[N*],first,last;
ll A,B,C,x,aa,bb,mod;
int main(){
scanf("%I64d%I64d%I64d%I64d%I64d%I64d%I64d%I64d",&n,&A,&B,&C,&x,&aa,&bb,&mod);
for(int i=,tot=;i<=n;++i) {
x=(x*aa+bb)%mod;
ll xx=x%(A+B+C);
if(tot<=||xx<A) a[i]=,b[i]=x,++tot;
else if(A<=xx&&xx<A+B) a[i]=,b[i]=x,++tot;
else a[i]=,--tot;
}
head=1e7+;
first=tail=last=head;
int ans=;
for(int i=;i<=n;++i) {
if(!a[i]) {
st[++last]=b[i];
if(q[tail]<=b[i]) q[++tail]=b[i];
}
else if(a[i]==) {
st[first--]=b[i];
while(head<tail&&q[head+]<b[i]) ++head;
q[head--]=b[i];
}
else {
if(q[tail]==st[last]) --tail;
--last;
}
ans=(ans+q[tail])%P;
}
printf("%d\n",ans);
}

最新文章

  1. StackExchange.Redis--纯干货喂饱你
  2. 重新想象 Windows 8 Store Apps (69) - 其它: 自定义启动屏幕, 程序的运行位置, 保持屏幕的点亮状态, MessageDialog, PopupMenu
  3. android ImageSwitcher
  4. Python Tomcat Script(多实例)
  5. Convention插件 struts零配置
  6. js点击图片显示在左边大图
  7. 调色板QPalette类用法详解(附实例、源码)
  8. form.Show()和form.ShowDialog()的区别、新建一个form和MessageBox.Show()的常见用法
  9. SQL Server 中使用参数化Top语句
  10. Java笔记(二十) 注解
  11. 数据类型、运算符及Scanner类练习
  12. Navicat Premium 连接oracle ORA-01017:用户名/口令无效;登陆被拒绝
  13. pstack跟踪进程栈
  14. Confluence 6 临时目录(安装目录)
  15. Android基础总结+SQlite数据库【申明:来源于网络】
  16. java使用StringBuilder的方法反转字符串输出
  17. php解析处理java的btye字节;php解析处理java的ByteArrayOutputStream字节流/数据流
  18. 图形化调试工具DDD
  19. Windows Mysql binlog 数据恢复
  20. fadora24安装settools,pip包出错解决方法

热门文章

  1. Zookeeper之Error contacting service. It is probably not running.
  2. 【Linux常见命令】pwd命令
  3. 什么是最好的在线UML软件工具?
  4. SAP WM TO Print Control设置里,Movement Type 的优先级更高
  5. Pig设计模式概要以及与SQL的设计模式的对比
  6. 图论--2-SAT--详解
  7. Jmeter 插件图表分析
  8. Python的内存管理和垃圾回收
  9. 学习Vue第三节,事件修饰符stop、prevent、capture、self、once
  10. 修改MySQL表中的字段属性