Submission #1171773

#TimeUsernameProblemLanguageResultExecution timeMemory
1171773bbartekA Plus B (IOI23_aplusb)C++20
10 / 100
0 ms328 KiB
#include <bits/stdc++.h>
#include "aplusb.h"

using namespace std;

typedef long long ll;
#define st first
#define nd second
#define pb push_back

vector<int> smallest_sums(int n, vector<int> A, vector<int> B) {
	int pocz = A[0] + B[0],kon = A[n-1] + B[n-1],sro;

    ll licznik,punkt;
    while(pocz < kon){
        sro = (pocz+kon+1)/2;
        licznik = 0,punkt = n-1;
        for(int i=0;i<n;i++){
            if(A[i] + B[0] > sro)
                break;
            while(A[i] + B[punkt] > sro)
                punkt--;

            licznik += punkt+1;
        }
        if(licznik > n){
            kon = sro-1;
        }
        else{
            pocz = sro;
        }
    }

    vector<int> wyn;

    licznik = 0,punkt = n-1;
    for(int i=0;i<n;i++){
        if(A[i] + B[0] > pocz)
            break;
        for(int j=0;j<n;j++){
            if(A[i]+B[j] > pocz)
                break;

            wyn.pb(A[i] + B[j]);
        }
    }

    sort(wyn.begin(),wyn.end());

    return wyn;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...