제출 #894391

#제출 시각아이디문제언어결과실행 시간메모리
894391ttamxExamination (JOI19_examination)C++14
100 / 100
196 ms14396 KiB
#include<bits/stdc++.h> #define sz(x) (int)(x).size() #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() using namespace std; using ll = long long; using db = long double; using vi = vector<int>; using vl = vector<ll>; using vd = vector<db>; using pii = pair<int,int>; using pll = pair<ll,ll>; using pdd = pair<db,db>; const int INF=0x3fffffff; // const int MOD=1000000007; const int MOD=998244353; const ll LINF=0x1fffffffffffffff; const db DINF=numeric_limits<db>::infinity(); const db EPS=1e-9; const db PI=acos(db(-1)); const int N=2e5+5; int n,q; int ans[N]; vector<int> v; struct point{ int x,y,z,i; bool operator<(const point &o)const{ if(x!=o.x)return x>o.x; if(y!=o.y)return y>o.y; return i<o.i; } }a[N],b[N]; struct fenwick{ int t[N]; void update(int i,int v){ for(;i<=n+q;i+=i&-i)t[i]+=v; } int query(int i){ int res=0; for(;i>0;i-=i&-i)res+=t[i]; return res; } }f; void CDQ(int l,int r){ if(l==r)return; int m=(l+r)/2; CDQ(l,m); CDQ(m+1,r); for(int i=l,j=m+1,p=l;p<=r;){ if(j>r||(i<=m&&a[i].y>=a[j].y)){ b[p++]=a[i]; if(a[i].i==0)f.update(a[i].z,1); i++; }else{ b[p++]=a[j]; if(a[j].i)ans[a[j].i]+=f.query(n+q)-f.query(a[j].z-1); j++; } } for(int i=l;i<=m;i++)if(a[i].i==0)f.update(a[i].z,-1); for(int i=l;i<=r;i++)a[i]=b[i]; } int main(){ cin.tie(nullptr)->sync_with_stdio(false); cin >> n >> q; for(int i=1;i<=n;i++){ cin >> a[i].x >> a[i].y; a[i].z=a[i].x+a[i].y; v.emplace_back(a[i].z); } for(int i=n+1;i<=n+q;i++){ cin >> a[i].x >> a[i].y >> a[i].z; v.emplace_back(a[i].z); a[i].i=i-n; } sort(all(v)); for(int i=1;i<=n+q;i++)a[i].z=lower_bound(all(v),a[i].z)-v.begin()+1; sort(a+1,a+n+q+1); CDQ(1,n+q); for(int i=1;i<=q;i++)cout << ans[i] << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...