Submission #787498

# Submission time Handle Problem Language Result Execution time Memory
787498 2023-07-19T08:33:36 Z 8pete8 trapezoid (balkan11_trapezoid) C++14
14 / 100
152 ms 17704 KB
#include<iostream>
#include<stack>
#include<map>
#include<vector>
#include<string>
#include<unordered_map>
#include <queue>
#include<cstring>
#include<limits.h>
#include<cmath>
#include<set>
#include<algorithm>
#include<bitset>
#include<stack>
using namespace std;
#define ll long long
#define f first
#define endl "\n"
#define s second
#define pii pair<int,int>
#define pppiiii pair<pii,pii>
#define ppii pair<pii,pii>
#define all(x) x.begin(),x.end()
#define pb push_back
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define fastio ios::sync_with_stdio(false);cin.tie(NULL);
const int mxn=2*1e5+1,mx=1e6;
#define int unsigned long long
pii seg[3*mxn+10];
//mx size + way
int n;
pii comp(pii a,pii b){
    pii tmp=max(a,b);
    if(a.f==b.f)tmp.s=a.s+b.s;
    if(tmp.f==0)tmp.s=1;
    return tmp;
}
void upd(int pos,pii val){
    pos+=n;
    seg[pos]=comp(seg[pos],val);
    for(;pos>1;pos>>=1)seg[pos>>1]=comp(seg[pos],seg[pos^1]);
}
pii qry(int l,int r){
    pii ans={0,0};
    for(l+=n,r+=n;l<=r;l>>=1,r>>=1){
        if(l&1)ans=comp(ans,seg[l++]);
        if(!(r&1))ans=comp(ans,seg[r--]);
    }
    if(ans.f==0)ans.s=1;
    return ans;
}
vector<int>up;
int getpos(int val){return lb(all(up),val)-up.begin();}
pii ans[mxn+10];
int32_t main(){
    //bot start = qry the up start
    //bot end = update up end
    cin>>n;
    vector<ppii>v;
    for(int i=0;i<n;i++){
        pii a,b;cin>>a.s>>b.s>>a.f>>b.f;
        //up start, up end,bot start, bot end
        up.pb(a.s);
        up.pb(b.s);
        v.pb({a,{1,i}});
        v.pb({b,{-1,i}});
    }
    sort(all(up));
    sort(all(v));
    n*=2;
    for(auto i:v){
        if(i.s.f==1){
            int pos=getpos(i.f.s);
            ans[i.s.s]=qry(0,pos);
            ans[i.s.s].f++;
            //for(int i=0;i<2*n;i++)cout<<seg[i].f<<" "<<seg[i].s<<'\n';
            //cout<<ans[i.s.s].f<<" "<<ans[i.s.s].s<<"A\n";
        }
        else {
            //cout<<"A\n";
            upd(getpos(i.f.s),ans[i.s.s]);
        }
    }
    pii ans=qry(0,n);
    cout<<ans.f<<" "<<ans.s<<'\n';
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Incorrect 1 ms 340 KB Expected int32, but "10313130667392" found
4 Incorrect 1 ms 468 KB Expected int64, but "9896467080883601408" found
5 Partially correct 3 ms 724 KB Partially correct
6 Incorrect 4 ms 848 KB Expected int64, but "9817663296286682560" found
7 Incorrect 5 ms 976 KB Expected int64, but "15126877329018519552" found
8 Partially correct 7 ms 1100 KB Partially correct
9 Incorrect 14 ms 2120 KB Expected int32, but "2248786528710863832" found
10 Incorrect 30 ms 3908 KB Expected int64, but "13423941841486661120" found
11 Incorrect 34 ms 4644 KB Expected int64, but "17148325072771146318" found
12 Incorrect 82 ms 9140 KB Expected int32, but "9183932486774365824" found
13 Incorrect 88 ms 10672 KB Expected int64, but "14251591625020113344" found
14 Incorrect 115 ms 13296 KB Expected int64, but "15271637504803712768" found
15 Incorrect 115 ms 13984 KB Expected int64, but "10420374542398040064" found
16 Incorrect 125 ms 14648 KB Expected int32, but "6233362917342126368" found
17 Incorrect 129 ms 15576 KB Expected int64, but "10940917780872015856" found
18 Incorrect 128 ms 16292 KB Expected int64, but "12249444714630285294" found
19 Incorrect 137 ms 16272 KB Expected int32, but "5619696618904563712" found
20 Incorrect 152 ms 17704 KB Expected int64, but "18110925340075973263" found