Submission #945077

#TimeUsernameProblemLanguageResultExecution timeMemory
945077JakobZorzExamination (JOI19_examination)C++17
0 / 100
3075 ms12748 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{ int a,b,c; int res=0; bool is_q=false; }; bool cmp1(Obj*a,Obj*b){ if(a->c==b->c&&a->b==b->b) return a->a<b->a; if(a->c==b->c) return a->b<b->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){ if(arr.empty()) return; int n=(int)arr.size(); vector<Obj*>qrs,vals; vector<Obj*>arr1,arr2; for(int i=n/2;i<n;i++){ arr2.push_back(arr[i]); if(!arr[i]->is_q) vals.push_back(arr[i]); } for(int i=0;i<n/2;i++){ arr1.push_back(arr[i]); if(arr[i]->is_q) qrs.push_back(arr[i]); } proc(vals,qrs); if(n>1){ 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; } vector<Obj>qrs(q); for(Obj&i:qrs){ cin>>i.a>>i.b>>i.c; i.is_q=true; } 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 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...