Cod sursa(job #2864968)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 8 martie 2022 12:52:53
Problema Grendizer Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")

using namespace std;

ifstream fin  ("grendizer.in");
ofstream fout ("grendizer.out");

const int MAX_N = 100005;

struct punct{
    int x;
    int y;
} q, p[MAX_N];

vector <int> sum, dif;
vector <int> vs[MAX_N], vd[MAX_N];

int n, r;

int st, md, dr;
int cautbin(vector <int> cb, int target){
    st = 0;
    dr = (int)cb.size()-1;
    while(st <= dr){
        md = ((st+dr)>>1);
        if(cb[md] == target) return md;
        if(cb[md] <  target) st = md + 1;
        if(cb[md] >  target) dr = md - 1;
    }
}

int main (){
    fin>>n;
    for(int i=1; i<=n; i++){
        fin>>p[i].x>>p[i].y;
        sum.push_back(p[i].x + p[i].y);
        dif.push_back(p[i].x - p[i].y);
    }
    sort(sum.begin(), sum.end());
    sort(dif.begin(), dif.end());

    for(auto s : sum) cout<<s<<" ";
    cout<<"\n";
    for(auto d : dif) cout<<d<<" ";

    for(int i=1; i<=n; i++){
        vs[ cautbin(sum, p[i].x+p[i].y) ].push_back(i);
        vd[ cautbin(dif, p[i].x-p[i].y) ].push_back(i);
    }

    int teste;
    fin>>teste;
    while(teste--){
        fin>>q.x>>q.y>>r;

        ///latura rombului nord-vest

        ///latura rombului nord-est

        ///latura rombului sud-est

        ///latura rombului sud-vest
    }
    return 0;
}
/**
  1
 111
11111
 111
  1
**/