제출 #1337672

#제출 시각아이디문제언어결과실행 시간메모리
1337672hyyhCollecting Stamps 3 (JOI20_ho_t3)C++20
0 / 100
0 ms344 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include <tuple>
#include <math.h>
#include <cstring>
#include <bitset>
#include <set>
#include <map>

#define int long long

using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;

#define endl '\n'
#define f first
#define s second
#define all(x) begin(x),end(x)
#define m_p make_pair

signed main(){
    int n;cin >> n;
    int m;cin >> m;
    vector<int> vc(n);
    vector<pii> vc2(n);
    for(int i{};i < n;i++){
        int g;cin >> g;
        vc[i] = g;
        vc2[i].f = m-g;
    }
    for(int i{};i < n;i++){
        int g;cin >> g;
        vc[i] -= g;
        vc2[i].s = g;
    }
    sort(all(vc));
    sort(all(vc2));
    // for(int i{};i < n;i++){
    //     cout << vc[i] << " ";
    // }
    // for(int i{};i <n;i++){
    //     cout << vc2[i].f << " " << vc2[i].s << endl;
    // }
    //cout << endl;
    int ans = upper_bound(all(vc),0)-vc.begin();
    int cur = 0;
    for(int i{};i < n;i++){
        int val = vc2[i].f;
        if(val <= vc2[i].s) cur++;
        int pos = upper_bound(all(vc),-val*2)-vc.begin();
        //cout << val << " " << cur << " " << pos << endl;
        ans = max(ans,cur+pos);
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...