提交时间:2026-02-06 19:58:39

运行 ID: 84051

#include <iostream> #include <vector> #include <string> #include <sstream> #include <algorithm> using namespace std; vector<int> parseArray(const string &line) { vector<int> arr; size_t start = line.find('(') + 1; size_t end = line.find(')'); string content = line.substr(start, end - start); stringstream ss(content); string token; while (getline(ss, token, ',')) { stringstream numStream(token); int num; numStream >> num; arr.push_back(num); } return arr; } string arrayToString(const vector<int> &arr) { string result = "("; for (size_t i = 0; i < arr.size(); ++i) { if (i != 0) { result += ","; } result += to_string(arr[i]); } result += ")"; return result; } vector<int> encodeAtoB(const vector<int> &A) { int N = A.size(); vector<int> B(N, 0); for (int i = 1; i < N; ++i) { int count = 0; for (int j = 0; j < i; ++j) { if (A[j] < A[i]) { count++; } } B[i] = count; } return B; } vector<int> decodeBtoA(const vector<int> &B) { int N = B.size(); vector<int> A; for (int i = 0; i < N; ++i) { int pos = B[i]; A.insert(A.begin() + pos, i); } return A; } int main() { int N; cin >> N; cin.ignore(); // Ignore the newline after reading N string line; getline(cin, line); vector<int> inputArray = parseArray(line); if (line.find("A=") != string::npos) { // Input is A, compute B vector<int> B = encodeAtoB(inputArray); cout << "B=" << arrayToString(B) << endl; } else if (line.find("B=") != string::npos) { // Input is B, compute A vector<int> A = decodeBtoA(inputArray); cout << "A=" << arrayToString(A) << endl; } return 0; }