174302025-07-16 11:39:13peti1234Particlescpp17Hibás válasz 45/1001.292s9844 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> sorx, sory;
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    long double l;
    int n,k; cin >> n >> l >> k;

    vector<pair<long double,long double>> x(n),y(n);
    for (int i = 0; i < n; i++) {
        int a, b;
        cin >> a >> b;
        x[i]={a, b};
    }
    for (int i = 0; i < n; i++) {
        int a, b;
        cin >> a >> b;
        y[i]={a, b};
    }

    // sorx, sory-ba a k  leggyorsabb

    long double lo = 0, h = 2e9;
    for (int it=0; it<60; it++) {
        long double m = (lo+h)/2;
        vector<pair<long double, int> > x1, y1;
        for (int i = 0; i < n; i++) {
            x1.push_back({(m-x[i].first)*x[i].second,i});
        }
        for (int i = 0; i < n; i++) {
            y1.push_back({(m-y[i].first)*y[i].second,i});
        }
        sort(x1.begin(), x1.end());
        sort(y1.begin(), y1.end());
        if (x1[n-k].first+y1[n-k].first > l) h = m;
        else lo = m;
        if(it+1 == 60) {
            for (int i = n-1; i >= n-k; i--) sorx.push_back(x1[i].second), sory.push_back(y1[i].second);
        }
    }

    vector<pair<long double, pair<int, int> > > a;
    for (int i:sorx) {
        for (int j:sory) {
            if (x[i].first < y[j].first) a.push_back({(l-(y[j].first-x[i].first)*x[i].second)/(x[i].second+y[j].second)+((y[j].first)),{i,j}});
            else a.push_back({(l-(x[i].first-y[j].first)*y[j].second)/(x[i].second+y[j].second)+((x[i].first)),{i,j}});
        }
    }
    sort(a.begin(), a.end());
    vector<bool> w1(n),w2(n);
    for (int i = 0; i < a.size(); i++) {
        int x=a[i].second.first, y=a[i].second.second;
        if (!w1[x] && !w2[y]) {
            w1[x] = true;
            w2[y] = true;
            cout << x+1 << ' ' << y+1 << '\n';
            k--;
            if (k == 0) break;
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask145/100
1Elfogadva5/51ms512 KiB
2Hibás válasz0/53ms820 KiB
3Hibás válasz0/53ms564 KiB
4Hibás válasz0/58ms816 KiB
5Hibás válasz0/510ms820 KiB
6Hibás válasz0/517ms984 KiB
7Elfogadva5/5212ms2344 KiB
8Elfogadva5/5296ms2848 KiB
9Elfogadva5/5421ms4084 KiB
10Elfogadva5/5597ms5124 KiB
11Elfogadva5/5708ms5860 KiB
12Hibás válasz0/5862ms7476 KiB
13Elfogadva5/5999ms8368 KiB
14Elfogadva5/51.098s8808 KiB
15Hibás válasz0/51.161s9252 KiB
16Hibás válasz0/51.289s9844 KiB
17Hibás válasz0/51.269s9836 KiB
18Hibás válasz0/51.292s9828 KiB
19Hibás válasz0/51.241s9828 KiB
20Elfogadva5/51.261s9812 KiB