답안 #676419

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
676419 2022-12-30T21:11:08 Z urosk Examination (JOI19_examination) C++14
43 / 100
3000 ms 265152 KB
#define here cerr<<"===========================================\n"
#define dbg(x) cerr<<#x<<": "<<x<<endl;
#include "bits/stdc++.h"
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
#define ld double
#define ll int
#define llinf 100000000000000000LL // 10^17
#define pb push_back
#define popb pop_back
#define fi first
#define sc second
#define endl '\n'
#define pll pair<ll,ll>
#define pld pair<ld,ld>
#define sz(a) (ll)(a.size())
#define all(a) a.begin(),a.end()
#define ceri(a,l,r) {cerr<<#a<<": ";for(ll i_ = l;i_<=r;i_++) cerr<<a[i_]<< " ";cerr<<endl;}
#define cer(a) {cerr<<#a<<": ";for(ll x_ : a) cerr<<x_<< " ";cerr<<endl;}

#define daj_mi_malo_vremena ios_base::sync_with_stdio(false);cerr.tie(0);cout.tie(0);cin.tie(0);

using namespace std;
using namespace __gnu_pbds;
typedef tree<int,null_type,less_equal<ll>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
#define maxn 400005
struct tupl{
    ll x,y,sum,id;
} v[maxn];
ll n,q;
pll a[maxn];
ordered_set t[4*maxn];
ll ls[4*maxn],rs[4*maxn],root,tsz;
void upd(ll v,ll tl,ll tr,ll i,ll x,bool f){
    if(f) t[v].insert(x);
    else t[v].erase(t[v].find_by_order(t[v].order_of_key(x)));
    if(tl==tr) return;
    ll mid = (tl+tr)/2;
    if(i<=mid) upd(ls[v],tl,mid,i,x,f);
    else upd(rs[v],mid+1,tr,i,x,f);
}
ll get(ll v,ll tl,ll tr,ll l,ll r,ll x){
    if(r<tl||l>tr||tl>tr) return 0;
    if(l<=tl&&tr<=r){
        ll cnt = t[v].order_of_key(x);
        return sz(t[v]) - cnt;
    }
    ll mid = (tl+tr)/2;
    return get(ls[v],tl,mid,l,r,x) + get(rs[v],mid+1,tr,l,r,x);
}
void init(ll &v,ll tl,ll tr){
    v = ++tsz;
    if(tl==tr) return;
    ll mid = (tl+tr)/2;
    init(ls[v],tl,mid);
    init(rs[v],mid+1,tr);
}
bool cmp(pll x,pll y){return x.fi+x.sc<y.fi+y.sc;}
bool cmp2(tupl x,tupl y){return x.sum<y.sum;}
map<ll,ll> mp;
set<ll> s;
ll it = 0;
ll ans[maxn];
void tc(){
    cin >> n >> q;
    for(ll i = 1;i<=n;i++) cin >> a[i].fi >> a[i].sc;
    for(ll i = 1;i<=q;i++) cin >> v[i].x >> v[i].y >> v[i].sum;
    for(ll i = 1;i<=q;i++) v[i].id = i;
    sort(a+1,a+1+n,cmp);
    sort(v+1,v+1+q,cmp2);
    for(ll i = 1;i<=n;i++) s.insert(a[i].fi),s.insert(a[i].sc);
    for(ll i = 1;i<=q;i++) s.insert(v[i].x),s.insert(v[i].y);
    for(ll x : s) mp[x] = ++it;
    init(root,1,it);
    for(ll i = 1;i<=n;i++) upd(root,1,it,mp[a[i].fi],mp[a[i].sc],1);
    ll k = 1;
    for(ll j = 1;j<=q;j++){
        while(k<=n&&a[k].fi+a[k].sc<v[j].sum){
            upd(root,1,it,mp[a[k].fi],mp[a[k].sc],0);
            k++;
        }
        ans[v[j].id] = get(root,1,it,mp[v[j].x],it,mp[v[j].y]);
    }
    for(ll i = 1;i<=q;i++) cout<<ans[i]<<endl;
}
int main(){
	daj_mi_malo_vremena
    int t; t = 1;
    while(t--){
        tc();
    }
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 93 ms 125500 KB Output is correct
2 Correct 100 ms 125592 KB Output is correct
3 Correct 90 ms 125592 KB Output is correct
4 Correct 93 ms 125504 KB Output is correct
5 Correct 93 ms 125544 KB Output is correct
6 Correct 91 ms 125592 KB Output is correct
7 Correct 115 ms 128972 KB Output is correct
8 Correct 112 ms 128940 KB Output is correct
9 Correct 112 ms 128976 KB Output is correct
10 Correct 109 ms 128204 KB Output is correct
11 Correct 111 ms 128204 KB Output is correct
12 Correct 103 ms 126320 KB Output is correct
13 Correct 111 ms 128956 KB Output is correct
14 Correct 112 ms 128972 KB Output is correct
15 Correct 112 ms 128988 KB Output is correct
16 Correct 108 ms 128244 KB Output is correct
17 Correct 105 ms 128204 KB Output is correct
18 Correct 98 ms 125984 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1974 ms 222532 KB Output is correct
2 Correct 1997 ms 222776 KB Output is correct
3 Correct 1971 ms 222672 KB Output is correct
4 Correct 1198 ms 220468 KB Output is correct
5 Correct 1074 ms 220684 KB Output is correct
6 Correct 325 ms 150180 KB Output is correct
7 Correct 1886 ms 222392 KB Output is correct
8 Correct 1662 ms 222164 KB Output is correct
9 Correct 1424 ms 220748 KB Output is correct
10 Correct 1353 ms 222780 KB Output is correct
11 Correct 957 ms 220252 KB Output is correct
12 Correct 279 ms 142540 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1974 ms 222532 KB Output is correct
2 Correct 1997 ms 222776 KB Output is correct
3 Correct 1971 ms 222672 KB Output is correct
4 Correct 1198 ms 220468 KB Output is correct
5 Correct 1074 ms 220684 KB Output is correct
6 Correct 325 ms 150180 KB Output is correct
7 Correct 1886 ms 222392 KB Output is correct
8 Correct 1662 ms 222164 KB Output is correct
9 Correct 1424 ms 220748 KB Output is correct
10 Correct 1353 ms 222780 KB Output is correct
11 Correct 957 ms 220252 KB Output is correct
12 Correct 279 ms 142540 KB Output is correct
13 Correct 2393 ms 222476 KB Output is correct
14 Correct 2266 ms 222588 KB Output is correct
15 Correct 1918 ms 222536 KB Output is correct
16 Correct 1255 ms 220404 KB Output is correct
17 Correct 1068 ms 220860 KB Output is correct
18 Correct 356 ms 150144 KB Output is correct
19 Correct 2325 ms 222576 KB Output is correct
20 Correct 2439 ms 222568 KB Output is correct
21 Correct 2150 ms 221788 KB Output is correct
22 Correct 1322 ms 222700 KB Output is correct
23 Correct 936 ms 220216 KB Output is correct
24 Correct 272 ms 142588 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 93 ms 125500 KB Output is correct
2 Correct 100 ms 125592 KB Output is correct
3 Correct 90 ms 125592 KB Output is correct
4 Correct 93 ms 125504 KB Output is correct
5 Correct 93 ms 125544 KB Output is correct
6 Correct 91 ms 125592 KB Output is correct
7 Correct 115 ms 128972 KB Output is correct
8 Correct 112 ms 128940 KB Output is correct
9 Correct 112 ms 128976 KB Output is correct
10 Correct 109 ms 128204 KB Output is correct
11 Correct 111 ms 128204 KB Output is correct
12 Correct 103 ms 126320 KB Output is correct
13 Correct 111 ms 128956 KB Output is correct
14 Correct 112 ms 128972 KB Output is correct
15 Correct 112 ms 128988 KB Output is correct
16 Correct 108 ms 128244 KB Output is correct
17 Correct 105 ms 128204 KB Output is correct
18 Correct 98 ms 125984 KB Output is correct
19 Correct 1974 ms 222532 KB Output is correct
20 Correct 1997 ms 222776 KB Output is correct
21 Correct 1971 ms 222672 KB Output is correct
22 Correct 1198 ms 220468 KB Output is correct
23 Correct 1074 ms 220684 KB Output is correct
24 Correct 325 ms 150180 KB Output is correct
25 Correct 1886 ms 222392 KB Output is correct
26 Correct 1662 ms 222164 KB Output is correct
27 Correct 1424 ms 220748 KB Output is correct
28 Correct 1353 ms 222780 KB Output is correct
29 Correct 957 ms 220252 KB Output is correct
30 Correct 279 ms 142540 KB Output is correct
31 Correct 2393 ms 222476 KB Output is correct
32 Correct 2266 ms 222588 KB Output is correct
33 Correct 1918 ms 222536 KB Output is correct
34 Correct 1255 ms 220404 KB Output is correct
35 Correct 1068 ms 220860 KB Output is correct
36 Correct 356 ms 150144 KB Output is correct
37 Correct 2325 ms 222576 KB Output is correct
38 Correct 2439 ms 222568 KB Output is correct
39 Correct 2150 ms 221788 KB Output is correct
40 Correct 1322 ms 222700 KB Output is correct
41 Correct 936 ms 220216 KB Output is correct
42 Correct 272 ms 142588 KB Output is correct
43 Execution timed out 3074 ms 265152 KB Time limit exceeded
44 Halted 0 ms 0 KB -