【发布时间】:2019-02-20 19:44:10
【问题描述】:
有输出给我0 0
#include <bits/stdc++.h>
#define fsv(i , n) for(int i = 0 ; i < n ; ++i)
using namespace std;
int main()
{
int n ;
cin >> n ;
vector< pair< int , pair<int, int> > > vp(n);
vector <int> v(n) ;
fsv(i , v.size())cin >> v[i];
for(int i = 0 ; i < n ; ++i){
for(int j = i+1 ; j < n-1 ; ++j){
vp.push_back(make_pair(abs(v[i]-v[j]) , make_pair(i,j)));
}
}
sort(vp.begin() , vp.end());
cout << vp[0].second.first << " " << vp[0].second.second;
}
此代码与代码强制问题相关,我知道还有其他方法......但我问这是访问此类元素的正确方法?! http://codeforces.com/contest/34/problem/A
【问题讨论】:
-
请不要这样做:
#define fsv(i , n)- 它确实不会使您的代码更易于阅读或遵循,相反:现在我必须在阅读时更加努力地思考。一般来说,在 C++ 中尽可能避免使用预处理器宏,尤其是在控制流语句中避免使用它们。 -
或者,
std::tuple<int, int, int>从 C++11 开始。 -
vector< pair< int , pair<int, int> > > vp(n);创建一个填充有n默认初始化元素的向量。如果其中一个最终成为sort之后的第一个元素,我不会感到惊讶
标签: c++ stl c++14 stdvector push-back