Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cmath>
- using namespace std;
- int bf(vector<int> &c, int val){
- int L = 0, R = c.size(), middle, dt = 9999999, mdt = 9999997, min_i;
- while(true)
- {
- middle = int(ceil((L+R)/2));
- if(middle == 0 || middle == c.size()-1)
- return middle;
- if(val > c[middle])
- L = middle;
- if(val < c[middle])
- R = middle;
- if(val == c[middle])
- return middle;
- dt = abs(val - c[middle]);
- if(dt < mdt){
- mdt = dt;
- min_i = middle;
- }else if(dt == mdt){
- return middle;
- }else if(dt > mdt){
- return min_i;
- }
- }
- return middle;
- }
- int main()
- {
- int N,M;
- scanf("%d",&N);
- vector<int> Shirts(N);
- for(int i = 0; i < N; i++)
- scanf("%d", &Shirts[i]);
- scanf("%d",&M);
- vector<int> TShirts(M);
- for(int i = 0; i < M; i++)
- scanf("%d", &TShirts[i]);
- int Ms = -1, Mt = -1, Delta = 9999999;
- for(int x = 0; x < N; x++)
- {
- int Nearest = bf(TShirts, Shirts[x]);
- int Dt = abs(TShirts[Nearest] - Shirts[x]);
- if(Dt < Delta){
- Delta = Dt;
- Ms = x;
- Mt = Nearest;
- if(Delta == 0){
- printf("%d %d", Shirts[Ms], TShirts[Mt]);
- return 0;
- }
- }
- }
- printf("%d %d", Shirts[Ms], TShirts[Mt]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement