记录编号 |
476719 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2017]时间复杂度 |
最终得分 |
100 |
用户昵称 |
rvalue |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2017-11-26 19:14:13 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include <stack>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
bool vis[128];
int Parse(char*);
int main(){
freopen("2017complexity.in","r",stdin);
freopen("2017complexity.out","w",stdout);
int T,l;
int cpt,inc,dis;
int toc;
bool invalid;
char a[10],b[10],c[10],o[10];
scanf("%d",&T);
while(T--){
inc=0;
cpt=0;
dis=0;
invalid=false;
memset(vis,0,sizeof(vis));
std::stack< std::pair<char,int> > s;
scanf("%d%s",&l,o);
toc=Parse(o);
for(int i=0;i<l;i++){
scanf("%s",a);
if(*a=='E'){
if(s.empty()){
invalid=true;
}
else{
vis[s.top().first]=false;
if(s.top().second==0)
--dis;
else if(dis<=0&&s.top().second==-1)
--inc;
s.pop();
}
}
else if(*a=='F'){
scanf("%s%s%s",a,b,c);
if(vis[*a]){
invalid=true;
}
else{
vis[*a]=true;
if(*b=='n'){
if(*c=='n')
s.push(std::make_pair(*a,1));
else{
s.push(std::make_pair(*a,0));
++dis;
}
}
else{
if(*c=='n'){
s.push(std::make_pair(*a,-1));
if(dis<=0){
++inc;
cpt=std::max(inc,cpt);
}
}
else{
int bc,cc;
sscanf(b,"%d",&bc);
sscanf(c,"%d",&cc);
if(bc>cc){
s.push(std::make_pair(*a,0));
++dis;
}
else
s.push(std::make_pair(*a,1));
}
}
}
}
}
if(!s.empty()){
invalid=true;
}
if(invalid)
puts("ERR");
else if(toc==cpt)
puts("Yes");
else
puts("No");
}
return 0;
}
int Parse(char* buf){
if(buf[2]=='1')
return 0;
else{
int ans=0;
for(int i=4;buf[i]!=')';i++)
ans=ans*10+buf[i]-'0';
return ans;
}
}