#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdlib>
template<class T>
class mat
{
unsigned int nrows, ncols;
std::vector< T > data;
public:
mat(unsigned int rows, unsigned int cols)
: nrows(rows), ncols(cols)
, data(rows * cols)
{
}
T* operator[](unsigned int row)
{
return &data.at(row * ncols);
}
const T* operator[](unsigned int row) const
{
return &data.at(row * ncols);
}
};
int main()
{
mat<int> imat(50,50);
mat<float> fmat(30,40);
imat[10][20] = 10;
fmat[0][39] = 100.0;
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3N0ZGxpYj4KCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIG1hdAp7CiAgICB1bnNpZ25lZCBpbnQgbnJvd3MsIG5jb2xzOwogICAgc3RkOjp2ZWN0b3I8IFQgPiBkYXRhOwogICAgCnB1YmxpYzoKICAgIG1hdCh1bnNpZ25lZCBpbnQgcm93cywgdW5zaWduZWQgaW50IGNvbHMpCiAgICAgICAgOiBucm93cyhyb3dzKSwgbmNvbHMoY29scykKICAgICAgICAsIGRhdGEocm93cyAqIGNvbHMpCiAgICB7CiAgICB9CiAgICAKICAgIFQqIG9wZXJhdG9yW10odW5zaWduZWQgaW50IHJvdykKICAgIHsKICAgICAgICByZXR1cm4gJmRhdGEuYXQocm93ICogbmNvbHMpOwogICAgfQoKICAgIGNvbnN0IFQqIG9wZXJhdG9yW10odW5zaWduZWQgaW50IHJvdykgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gJmRhdGEuYXQocm93ICogbmNvbHMpOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBtYXQ8aW50PiBpbWF0KDUwLDUwKTsKICAgIG1hdDxmbG9hdD4gZm1hdCgzMCw0MCk7CgogICAgaW1hdFsxMF1bMjBdID0gMTA7CiAgICBmbWF0WzBdWzM5XSA9IDEwMC4wOwogICAgCiAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwp9Cg==