#37404: C++ NA 98%到底哪裡出錯了


oliverho0214@gmail.com (123)

學校 : 不指定學校
編號 : 210608
來源 : [36.228.245.204]
最後登入時間 :
2022-10-09 23:19:41
b966. 3. 線段覆蓋長度 -- 2016年3月apcs | From: [118.160.89.24] | 發表日期 : 2023-09-06 12:18

#include<iostream>
#include<vector>
#include<set>
#include<algorithm>

using namespace std;

bool cmp(pair<int,int> a,pair<int,int> b){
    return a.first<b.first;
}

main()
{
    int n;
    cin>>n;

    vector<pair<int,int>> data(n,pair<int,int>());

    for(auto& current:data){
        cin>>current.first>>current.second;
    }
    sort(data.begin(),data.end(),cmp);

    multiset<int> l;

    l.insert(data[0].first);
    l.insert(data[0].second);



    for(int i=1;i<data.size();i++){
        pair<int,int> current = data[i];

        auto iter = l.end();
        iter--;
        if(*iter<current.first){
            l.insert(current.first);
            l.insert(current.second);
        }
        else{
            if(*iter>current.second){
                continue;
            }
            l.erase(iter);
            l.insert(current.second);
        }
    }
    int sum=0;
    int num1=0,num2=0;
    for(auto iter=l.begin();iter!=l.end();iter++){
        if(!num1){
            num1=*iter;
        }
        else if(!num2){
            num2=*iter;
            sum += num2-num1;
            num2=0;
            num1=0;
        }

    }
    cout<<sum;

    return 0;
}
 
#37452: Re: C++ NA 98%到底哪裡出錯了


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
b966. 3. 線段覆蓋長度 -- 2016年3月apcs | From: [27.51.89.122] | 發表日期 : 2023-09-10 15:06

    int num1=0,num2=0;
    for(auto iter=l.begin();iter!=l.end();iter++){
        if(!num1){
            num1=*iter;
        }
        else if(!num2){
            num2=*iter;
            sum += num2-num1;
            num2=0;
            num1=0;
        }

    }


輸入的座標可能也是0,你可以改用-1之類的負數

 
ZeroJudge Forum