一道关于编码的问题c++

设有一个数组A:ARRAY[0..N-1] OF INTEGER;数组中存放的元素为0~N-1之间的整数,且A[i]≠A[j](当i≠j时)。
例如:
N=6时,有:A=(4,3,0,5,1,2)
此时,数组A的编码定义如下:
A[0]的编码为0;
A[i]的编码为:在A[0],A[1],……A[i-1]中比A[i]的值小的个数(i=1,2……N-1)
∴上面数组A的编码为:B=(0,0,0,3,1,2)

程序要求解决以下问题:
①给出数组A后,求出其编码;
②给出数组A的编码后,求出A中的原数据。
输入格式
每个测试文件只包含一组测试数据,每组输入包含三行。
第一行输入整数N;
第二行输入有两种可能:
例如:
A=(4,3,0,5,1,2)

B=(0,0,0,3,1,2)
其中输入中的逗号和括号都是英文状态下的。
输出格式
当输入的是A=(),则输出其编码。
当输入的是B=(),则输出A中的原数据。
输出数据的格式和输入数据的格式是一样的。
输入样例
6
A=(4,3,0,5,1,2)
输出样例
B=(0,0,0,3,1,2)


#include <iostream>
#include <vector>
using namespace std;
int main() {
        vector<int> nums{ 4,3,0,5,1,2 };
        int len = nums.size();
        vector<int> ans(len,0);
        for (int i = 0; i < len; i++) {
                for (int j = i; j < len; j++) {
                        if (nums[i] > nums[j]) {
                                ans[i]++;
                        }
                }
        }
        for (int i = 0; i < len; i++) {
                ans[i] = nums[i] - ans[i];
        }
        for (int n : ans)
        {
                cout << n << endl;
        }
}