ZBLOG

#include #include #include using namespace std; const int N = 1e5 +10; int n; vector a(N,vector(2)); vector ans ; int main() { cin>>n; for(int i = 1;i>a[...

在你的代码中,存在一个问题。在排序时,你使用了 sort(a.begin(), a.begin() + n) 这样的语法来对 a 进行排序。然而,这是不正确的用法。

应该使用 sort(a.begin() + 1, a.begin() + n + 1) 来对从索引1到n的部分进行排序。因为向量 a 的有效索引范围是从1到n。

以下是修正后的代码:

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

const int N = 1e5 +10;

int n; 
vector<vector<int>> a(N,vector<int>(2)); 
vector<vector<int>> ans ; 
int main() 
{
    cin >> n; 
    
    for(int i = 1; i <= n; i++) cin >> a[i][0] >> a[i][1]; 
    
    sort(a.begin() + 1, a.begin() + n + 1); 
    int st = -2e9, ed = 2e9; 
    
    for(int i = 1; i <= n; i++)
    { 
          if(ed < a[i][0]) 
          {
              if(st != -2e9) 
              ans.push_back({st, ed}); 
              
              st = a[i][0];
              ed = a[i][1];
          } 
          else 
          {
              ed = max(ed, a[i][1]);
          }
    } 
    
    if(st != -2e9) ans.push_back({st, ed});  
    
    cout << ans.size() << endl;
    
    return 0;
}

通过以上修改,你应该可以得到正确的结果。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=13295

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?