cpp求助
查看原帖
cpp求助
738674
isJason楼主2023/7/1 21:35
#include<bits/stdc++.h>
using namespace std;
int n;
map<string, int> a;
string ans[1001];
int idx=0;
bool cmp(string a, string b){
	return a<b;
}
int main(){
	cin>>n;
	a.insert(a.begin(), pair<string, int>("__NULL__",0));
	for(int op=0; op<n; op++){
		char lf[101], rg[101];
		string l, r;
		int s=0, t=0, fi;
		scanf("%[^=]=",lf);
		scanf("%[^;];\n",rg);
		l=lf; r=rg;
		if('0'<=r[0]&&r[0]<='9'){
			for(int i=0; i<(int)r.size()&&r[i]!='+'; i++){
				s*=10;
				s+=r[i]-'0';
				fi=i;
			}
			for(int i=fi+1; i<(int)r.size(); i++){
				t*=10;
				t+=r[i]-'0';
			}
			s+=t;
			if(a.end()==a.find(l)){
				ans[idx++]=l;
				a.insert(a.begin(), pair<string, int>(l, s));
			}else{
				a[l]=s;
			}
		}else{
			string x, y;
			bool flg=true;
			int fi, s;
			for(int i=0; i<(int)r.size()&&r[i]!='+'; i++){
				x+=r[i];
				fi=i;
			}
			for(int i=fi+1; i<(int)r.size(); i++){
				flg=false;
				y+=r[i];
			}
			if(flg){
				y="__NULL__";
			}
			s=a[x]+a[y];
			if(a.end()==a.find(l)){
				ans[idx++]=l;
				a.insert(a.begin(), pair<string, int>(l, s));
			}else{
				a[l]=s;
			}
		}
	}
	sort(ans, ans+idx, cmp);
	for(int i=0; i<idx; i++){
		printf("%s %d\n", ans[i].c_str(), a[ans[i]]);
	}
	return 0;
} 

和题解都对过了,感觉没啥问题,然而样例不过

2023/7/1 21:35
加载中...