Submission #34645408
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<(int)n;i++)
int read(){int r;scanf("%d",&r);return r;}
const int N=2e5;
pair<int,int> a[N+10];
vector<int> tr[N+10];
int n;
// [i-(i&(i-1))+1,i] 信息
void add(int x,int y) {
for(int i=x;i<=N+1;i+=(i&-i)) tr[i].push_back(y);
}
int sum(int x,int l,int r) { // [l,r]
int res=0;
for(int i=x;i ;i-=(i&-i)) res += upper_bound(tr[i].begin(),tr[i].end(),r) // (first > r)
-lower_bound(tr[i].begin(),tr[i].end(),l); // - (first >= l)
return res;
}
bool check(int x,int y,int k,int d){
int x0 = max(1 ,x-d);
int x1 = min(N+1,x+d);
int y0 = y-d;
int y1 = y+d;
// 求 x\in[x0,x1], y\in[y0,y1]
return (sum(x1,y0,y1)-sum(x0-1,y0,y1)) >= k;
}
int main() {
int n = read();
rep(i,0,n){
int x = read()+1; // 全部x+=1 保证 2e5+1 >= x+y >= 1
int y = read();
a[i] = {x+y,x-y};
}
sort(a,a+n,[](auto v0,auto v1){return v0.second < v1.second;});// 统一排序,让树状数组内的 值从小到大
rep(i,0,n) add(a[i].first,a[i].second);
int q = read();
while(q--) {
int x = read()+1; // 全部x+=1
int y = read();
int k = read();
if(check(x+y,x-y,k,0)){
printf("%d\n",0);
continue;
}
int l=0,r=2e5+10; // 二分范围, l: <k个, r: >= k个
while(l+1<r) {
int mid=(l+r)/2;
(check(x+y,x-y,k,mid)?r:l) = mid;
}
printf("%d\n",r);
}
return 0;
}
Submission Info
Submission Time
2022-09-06 09:40:24+0900
Task
Ex - Manhattan Christmas Tree
User
cromarmot
Language
C++ (GCC 9.2.1)
Score
600
Code Size
1466 Byte
Status
AC
Exec Time
2478 ms
Memory
15828 KiB
Compile Error
./Main.cpp: In function ‘int read()’:
./Main.cpp:4:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
4 | int read(){int r;scanf("%d",&r);return r;}
| ~~~~~^~~~~~~~~
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
600 / 600
Status
Set Name
Test Cases
Sample
example0.txt
All
000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, example0.txt
Case Name
Status
Exec Time
Memory
000.txt
AC
10 ms
8432 KiB
001.txt
AC
9 ms
8436 KiB
002.txt
AC
10 ms
8244 KiB
003.txt
AC
145 ms
8428 KiB
004.txt
AC
146 ms
8296 KiB
005.txt
AC
170 ms
8400 KiB
006.txt
AC
169 ms
8400 KiB
007.txt
AC
1166 ms
15656 KiB
008.txt
AC
422 ms
15432 KiB
009.txt
AC
1607 ms
15780 KiB
010.txt
AC
417 ms
15724 KiB
011.txt
AC
617 ms
15784 KiB
012.txt
AC
463 ms
15704 KiB
013.txt
AC
197 ms
8356 KiB
014.txt
AC
215 ms
8280 KiB
015.txt
AC
198 ms
8248 KiB
016.txt
AC
521 ms
8388 KiB
017.txt
AC
492 ms
8364 KiB
018.txt
AC
564 ms
8412 KiB
019.txt
AC
1707 ms
14812 KiB
020.txt
AC
1785 ms
15184 KiB
021.txt
AC
1764 ms
15260 KiB
022.txt
AC
1751 ms
14804 KiB
023.txt
AC
1621 ms
14004 KiB
024.txt
AC
1737 ms
15136 KiB
025.txt
AC
1778 ms
15784 KiB
026.txt
AC
1782 ms
15828 KiB
027.txt
AC
1791 ms
15556 KiB
028.txt
AC
1797 ms
15620 KiB
029.txt
AC
1791 ms
15688 KiB
030.txt
AC
1807 ms
15784 KiB
031.txt
AC
491 ms
15644 KiB
032.txt
AC
500 ms
15608 KiB
033.txt
AC
2473 ms
15460 KiB
034.txt
AC
2478 ms
15792 KiB
035.txt
AC
1486 ms
15764 KiB
036.txt
AC
1493 ms
15652 KiB
037.txt
AC
293 ms
15560 KiB
038.txt
AC
301 ms
15448 KiB
039.txt
AC
989 ms
12520 KiB
040.txt
AC
982 ms
14124 KiB
041.txt
AC
423 ms
13380 KiB
042.txt
AC
414 ms
11524 KiB
example0.txt
AC
8 ms
8352 KiB