bool compare(pair<int, int> lh, pair<int, int> rh)
{
return lh.first < rh.first;
}
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target)
{
vector<pair<int, int> > num;
int index = 1;
for(vector<int>::iterator iter = numbers.begin();
iter != numbers.end(); ++iter, ++index) {
num.push_back(make_pair(*iter, index));
}
sort(num.begin(), num.end(), compare);
int i = 0, j = num.size() - 1;
vector<int> res;
for(; i < j;) {
if(num[i].first + num[j].first == target) {
res.push_back(num[i].second);
res.push_back(num[j].second);
++i;
}
else if(num[i].first + num[j].first < target) {
++i;
}
else {
--j;
}
}
return res;
}
};