제출 #1306551

#제출 시각아이디문제언어결과실행 시간메모리
1306551KhoaDuyRoad Construction (JOI21_road_construction)C++20
100 / 100
1443 ms8524 KiB
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define ll long long
int n,k;
const int MAXN=2*1e5;
vector<pair<ll,ll>> v;
vector<ll> bst;
int solve(ll limit,bool trace){
    if(limit<=0){
        return 0;
    }
    int curr=0;
    set<pair<ll,int>> se;
    int ptr=-1;
    for(int i=0;i<n;i++){
        while(ptr+1<i&&v[i].first-v[ptr+1].first>limit){
            ptr++;
            se.erase({v[ptr].second,ptr});
        }
        auto it=se.lower_bound({v[i].second-limit,0});
        for(;it!=se.end()&&(*it).first<=v[i].second+limit;it++){
            curr++;
            if(trace){
                int idx=(*it).second;
                bst.push_back(max(abs(v[i].first-v[idx].first),abs(v[i].second-v[idx].second)));
            }
            if(curr>=k){
                return curr;
            }
        }
        se.insert({v[i].second,i});
    }
    return curr;
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    if(fopen("input.txt","r")){
        freopen("input.txt","r",stdin);
    }
    cin >> n >> k;
    v.resize(n);
    for(int i=0;i<n;i++){
        cin >> v[i].first >> v[i].second;
        v[i]={v[i].first-v[i].second,v[i].first+v[i].second};
    }
    sort(v.begin(),v.end());
    ll low=1,high=4e9;
    low--,high++;
    while(high-low>1){
        ll mid=((high-low)>>1)+low;
        if(solve(mid,false)>=k){
            high=mid;
        }
        else{
            low=mid;
        }
    }
    solve(low,true);
    while(bst.size()<k){
        bst.push_back(high);
    }
    sort(bst.begin(),bst.end());
    for(int i=0;i<k;i++){
        cout << bst[i] << endl;
    }
}

컴파일 시 표준 에러 (stderr) 메시지

road_construction.cpp: In function 'int main()':
road_construction.cpp:40:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |         freopen("input.txt","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...