⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3827597_ac_0ms_312k.cpp

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CPP
字号:
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>

using namespace std;

int n, m;

typedef pair<int, int>PII;
typedef vector <PII> VPII;
typedef vector <int> VI;

class Array
{
private:
	string name;
	int dim;
	int base;
	int size;
	VPII bounds;
	VI C;
public:
	Array()	{}
	Array(string name)
	{
		int i;

		this->name = name;
		cin >> this->base >> this->size >> this->dim;
		int upper, lower;
		this->bounds.clear();
		C.resize(dim + 1);
		for (i = 0; i < dim; i++)
		{
			cin >> lower >> upper;
			this->bounds.push_back(make_pair(lower, upper));
		}
		C[dim] = size;
		C[0] = base - C[dim] * bounds[dim - 1].first;
		for (i = dim - 1; i >= 1; i--)
		{
			C[i] = C[i + 1] * (bounds[i].second - bounds[i].first + 1);
			C[0] -= C[i] * bounds[i - 1].first;
		}
	}
	string getName()
	{
		return name;
	}

	void getAddress()
	{
		int i, l;
		int ret = C[0];

		cout << name << "[";
		for (i = 1; i <= dim; i++)
		{
			scanf("%d", &l);
			cout << l;
			if (i == dim)
				cout << "] = ";
			else
				cout << ", ";
			ret +=C[i] * l;
		}
		cout << ret << endl;
	}
};

vector <Array> array;

int main()
{
	int i, j;
	string name;

	array.clear();
	cin >> n >> m;
	for (i = 0; i < n; i++)
	{
		cin >> name;
		array.push_back(Array(name));
	}
	for (i = 0; i < m; i++)
	{
		cin >> name;
		for (j = 0; j < n; j++)
		{
			if (array[j].getName() == name)
			{
				array.at(j).getAddress();
				break;
			}
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -