#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> res;
        unordered_map<int, int> map;
        
        for (int i = 0; i < nums.size(); i++) {
            auto it = map.find(nums[i]);
            if (it == map.end()) {
                map.emplace(target - nums[i], i);
            } else {
                res.push_back(it->second);
                res.push_back(i);
                break;
            }
        }
        
        return res;
    }
};

int main() {
	vector<int> v{1,2,3,10,9,7,5,100};
	Solution sol;
	auto res = sol.twoSum(v, 15);
	cout << res[0] << " " << res[1] << endl;
	return 0;
}