I think you could use a simple 1 dimensional array of 63 elements (bytes). Each element (i.e index) in the array represents 1 sensor. The contents of the array element hold the controller number.
That way you can scan the array for each occurrence of a particular controller and the index into the array tells you the sensor number. You would need to add 1 to the index value as your array would have elements 0 to 62.
This assumes that a sensor can only be connected to 1 controller, but 1 controller can be connected to 1 or more sensors.
As far as the controller reporting back, you would need to decide the maximum number of sensors each controller could connect to. If it's 63, then you could configure your comms protocol to handle a 63 byte packet plus whatever packet overhead you need (packet id, length etc).
EDIT: having re-read the posts, it looks like you have a many to many relationship between controllers and sensors
Do you need to hold all the data or just the data from one controller at a time?
If you are using a SAMD21, then variable storage may not be such an issue compared to a 328p...