int main() { //freopen("data.in", "r", stdin); int N, R, i, j, index, LB, UB; string name; char nameBuffer[11]; vector<int> indexes; scanf("%d %d", &N, &R); getchar(); for(i=0; i<N; i++) { Array ar; scanf("%s %d %d %d", nameBuffer, &ar.baseAddress, &ar.bytesPerElement, &ar.dimensions); for(j=0; j<ar.dimensions; j++) { scanf("%d %d", &LB, &UB); ar.bounds.push_back( make_pair(LB, UB) ); } getchar(); ar.CalculateConstValues(); definitions[ string(nameBuffer) ] = ar; } for(i=0; i<R; i++) { indexes.clear(); scanf("%s", nameBuffer); Array &ar = definitions[ string(nameBuffer) ]; for(j=0; j<ar.dimensions; j++) { scanf("%d", &index); indexes.push_back(index); } int address=ar.c[0]; for(j=1; j<=ar.dimensions; j++) address += ar.c[j] * indexes[j-1]; printf("%s[%d", nameBuffer, indexes[0]); for(j=1; j<ar.dimensions; j++) printf(", %d", indexes[j]); printf("] = %d\n", address); } return 0; }