社区讨论
50玄关求助
B3789[信息与未来 2023] 程序分析参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjtec7g
- 此快照首次捕获于
- 2025/11/04 08:12 4 个月前
- 此快照最后确认于
- 2025/11/04 08:12 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
char s[1111][1111];
int n,sta;
int sum(int x) {
int y=0;
stack<int> st;
int d=0;
for(int i=sta;i<n;i++) {
int z;
if(sscanf(s[i],"if (x > %d) {",&z)==1) {
st.push(0);
if(!d) {
if(x>z) continue;
else d=st.size();
}
// cout<<z<<"[>"<<i<<"]"<<st.size()<<"\n";
}
else if(sscanf(s[i],"if (x < %d) {",&z)==1) {
st.push(0);
if(!d) {
if(x<z) continue;
else d=st.size();
}
// cout<<z<<"[<"<<i<<"]"<<st.size()<<"\n";
}
else if(sscanf(s[i],"y = %d",&z)==1&&!d) {
y=z;
// cout<<y<<" "<<d<<"[="<<i<<"]"<<st.size()<<"\n";
}
else if(s[i][0]=='}') {
if(d==st.size()) d=0;
st.pop();
}
}
return y;
}
int main() {
cin>>n;
int l=INT_MIN,r=INT_MAX;
set<int> st;
int id=0;
char c=getchar();
int m=n;
while(m--) {
string ss;
getline(cin,ss);
while(ss[0]==' ') ss.erase(0,1);
for(int i=0;i<ss.size();i++) s[id][i]=ss[i];
int x;
if(sscanf(s[id],"if (x > %d)",&x)==1) {
st.insert(x+1);
}
else if(sscanf(s[id],"if (x < %d)",&x)==1) {
st.insert(x-1);
}
id++;
}
set<int> st2;
int k=0;
for(;s[sta][0]=='y';sta++) {
m=sscanf(s[sta],"y = %d",&k);
}
st2.insert(k);
for(set<int>::iterator it=st.begin();it!=st.end();it++) {
st2.insert(sum(*it));
// cout<<*it<<":\n";
}
for(set<int>::iterator it=st2.begin();it!=st2.end();it++) cout<<*it<<" ";
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...