求助
查看原帖
求助
672757
封禁用户楼主2023/5/28 12:18
#include<bits/stdc++.h>
#include<bits/stdc++.h>
using namespace std;
const long long mm=1024;
long long n,s;
string lon("long"),in("int"),stri("String");
long long ch(long long l,string v)
{
	long long ttt=1;
	for(long long i=0;i<v.size();i++)
	{
		if(v[i]==',')
		{
			ttt++;
		}
	}
	return ttt;
}
long long zh(long long j,string w)
{
	long long tt=0;
	for(long long i=j;i<w.size();i++)
	{
		if(w[i]=='\"')
		{
			return tt;
		}
		else
		{
			tt++;
		}
	}
}
void zz(string w)
{
	long long v=0;
	for(long long i=0;i<w.size();i++)
	{
		if(w[i]=='=')
		{
			v+=zh(i+2,w);
		}
	}
	s+=v;
}
long long dd(long long j,string w)
{
	j++;
	int v=0;
	for(long long i=j;i<w.size();i++)
	{
		if(w[i]>='0'&&w[i]<='9')
		{
			v*=10;
			v+=(w[i]-'0');
		}
		else
		{
			break;
		}
	}
	return v;
}
void ccc(long long l,string w)
{
	int v=0;
	for(int i=3;i<w.size();i++)
	{
		if(w[i]=='[')
		{
			v+=dd(i,w);
		}
	}
	s+=v*l;
}
int main()
{
	cin>>n;
	string w;
	long long ll;
	for(long long i=1;i<=n+1;i++)
	{
		getline(cin,w);
		ll=w.find(lon,0)==0?8:(w.find(in,0)==0?4:6);
		if((ll==8&&w[4]!='[')||(ll==4&&w[3]!='['))
		{
			s+=ch(ll,w)*ll;
			continue;
		}
		else
		{
			if(ll==6)
			{
				zz(w);
			}
			else
			{
				ccc(ll,w);
			}
		}
	}
	long long k,m,g;
	k=m=g=0;
	if(s>=mm)
	{
		k=s/mm;
		s%=mm;
		if(k>=mm)
		{
			m=k/mm;
			k%=mm;
			if(m>=mm)
			{
				g=m/mm;
				m%=mm;
			}
		}
	}
	if(g>0)
	{
		printf("%dGB",g);
	}
	if(m>0)
	{
		printf("%dMB",m);
	}
	if(k>0)
	{
		printf("%dKB",k);
	}
	if(s>0)
	{
		printf("%dB",s);
	}
    return 0;
}
2023/5/28 12:18
加载中...