📄 3827597_ac_0ms_312k.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 + -