当我尝试定义这个向量时<pair<int , pair<int, int> > > vp(n)

When i try to define this vector< pair< int , pair<int, int> > > vp(n)

本文关键字:gt int lt pair vp 定义 向量      更新时间:2023-10-16

有输出给我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

问题是

vector< pair< int , pair<int, int> > > vp(n);
// ......................................^^^  n initial elements

n元素初始化向量,并push_back()添加其他n元素。

排序后vv[0]元素是(我想(首字母之一n

你应该创建一个向量

vector< pair< int , pair<int, int> > > vp;
// ....................................^^  no more initial elements; empy!

而且,为了加快速度并避免多余的搬迁,请保留n大小(但不是必需的(

vp.reserve(n);

在推回n元素之前。

偏离主题的建议:请避免包含非标准标题作为

#include <bits/stdc++.h>