제출 #945411

#제출 시각아이디문제언어결과실행 시간메모리
945411JakobZorzExamination (JOI19_examination)C++17
2 / 100
3065 ms17512 KiB
#include<iostream> #include<vector> #include<queue> #include<stack> #include<algorithm> #include<limits.h> #include<math.h> #include<map> #include<set> #include<unordered_map> #include<unordered_set> #include<iomanip> #include<cstring> #include<random> typedef long long ll; typedef unsigned long long ull; typedef long double ld; using namespace std; struct Obj{ ll a,b,c; int res; bool is_q; }; bool cmp1(Obj*a,Obj*b){ return a->c<b->c; } void proc(vector<Obj*>vals,vector<Obj*>qrs){ for(auto i:qrs) for(auto j:vals) if(j->a>=i->a&&j->b>=i->b) i->res++; } void dc(vector<Obj*>arr){ int n=(int)arr.size(); if(arr[0]->c==arr.back()->c){ vector<Obj*>qrs,vals; for(int i=0;i<n;i++){ if(arr[i]->is_q) qrs.push_back(arr[i]); else vals.push_back(arr[i]); } proc(vals,qrs); return; } int mid=0; for(int i=0;i<n/2||mid==0;i++) if(arr[i]->c!=arr[i+1]->c) mid=i+1; vector<Obj*>qrs,vals; vector<Obj*>arr1,arr2; for(int i=mid;i<n;i++){ arr2.push_back(arr[i]); if(!arr[i]->is_q) vals.push_back(arr[i]); } for(int i=0;i<mid;i++){ arr1.push_back(arr[i]); if(arr[i]->is_q) qrs.push_back(arr[i]); } proc(vals,qrs); dc(arr1); dc(arr2); } void solve(){ int n,q; cin>>n>>q; vector<Obj>arr(n); for(Obj&i:arr){ cin>>i.a>>i.b; i.c=i.a+i.b; i.is_q=false; i.res=0; } vector<Obj>qrs(q); for(Obj&i:qrs){ cin>>i.a>>i.b>>i.c; i.is_q=true; i.res=0; } vector<Obj*>all; for(Obj&i:arr) all.push_back(&i); for(Obj&i:qrs) all.push_back(&i); sort(all.begin(),all.end(),cmp1); dc(all); for(auto i:qrs) cout<<i.res<<"\n"; } int main(){ ios::sync_with_stdio(false);cout.tie(NULL);cin.tie(NULL); //freopen("/Users/jakob/cp_testing/test.txt","r",stdin);//freopen("output.out","w",stdout); int t=1;//cin>>t; while(t--)solve(); return 0; } /* 5 4 35 100 70 70 45 15 80 40 20 95 20 50 120 10 10 100 60 60 80 0 100 100 1 0 2 0 1 1 0 1 3 1 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...