답안 #557237

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
557237 2022-05-04T22:26:19 Z NintsiChkhaidze 사다리꼴 (balkan11_trapezoid) C++14
5 / 100
297 ms 44300 KB
#include <bits/stdc++.h>
#define pb push_back
#define s second
#define f first
#define ll long long
#define int ll
#define left (h<<1),l,((l+r)>>1)
#define right ((h<<1)|1),((l+r)>>1) + 1,r
using namespace std;
const int N = 400005,mod = 30013;
map <int,int> mp;
int a[N],b[N],c[N],d[N];
pair <int,int> t[4*N];
vector <int> v;
queue <pair<pair<int,int>,pair<int,int> > > q;
vector <pair<pair<int,int>,int> > vec;

void upd(int h,int l,int r,int idx,int val1,int val2){
    if (l == r){
        if (val1 == t[h].f) t[h].s = (val2 + t[h].s)%mod;
        else if (val1 > t[h].f) t[h] = {val1,val2};
        return;
    }
    if(idx > (l+r)/2) upd(right,idx,val1,val2);
    else upd(left,idx,val1,val2);
    
    if (t[h*2].f > t[h*2 + 1].f) t[h] = t[h*2];
    else if (t[h*2].f < t[h*2 + 1].f) t[h] = t[h*2 + 1];
    else t[h] = {t[h*2].f,(t[h*2].s + t[h*2+1].s)%mod};
}
pair<int,int> get(int h,int l,int r,int L,int R){
    if (r < L || R < l) return {0,0};
    if (L <= l && r <= R) return t[h];
    pair <int,int> a = get(left,L,R),b = get(right,L,R);
    if (a.f > b.f) return a;
    if (b.f > a.f) return b;
    return {a.f,(a.s + b.s)%mod};
}
signed main() {
    ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL);
    int n;
    cin>>n;
    
    for (int i = 1; i <= n; i++){
        cin>>a[i]>>b[i]>>c[i]>>d[i];
        v.pb(a[i]);
        v.pb(b[i]);
        v.pb(c[i]);
        v.pb(d[i]);
        
    }
    sort(v.begin(),v.end());
    int k=0;
    for (int i=0;i<v.size();i++){
        if (!i || v[i] != v[i - 1]) k++;
        mp[v[i]] = k;
    }
    
    for (int i = 1; i <= n; i++){
        a[i] = mp[a[i]];
        b[i] = mp[b[i]];
        c[i] = mp[c[i]];
        d[i] = mp[d[i]];
        vec.pb({{a[i],b[i]},i});
    }
    
    sort(vec.begin(),vec.end());
    for (int i = 0; i < vec.size(); i++){
        int id = vec[i].s,x=vec[i].f.f,y=vec[i].f.s;
        while(q.size() && q.front().f.f < x){
            upd(1,1,N-5,q.front().f.s,q.front().s.f,q.front().s.s);
            q.pop();
        }
        
        pair <int,int> pr = get(1,1,N-5,1,c[id]);
        int len = pr.f,cnt = pr.s;
        if (len == 0) cnt=1;
        q.push({{b[id],d[id]},{len+1,cnt}});
    }
    
    while(q.size()){
        upd(1,1,N-5,q.front().f.s,q.front().s.f,q.front().s.s);
        q.pop();
    }
    cout<<t[1].f<<" "<<t[1].s;
}

Compilation message

trapezoid.cpp: In function 'int main()':
trapezoid.cpp:54:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |     for (int i=0;i<v.size();i++){
      |                  ~^~~~~~~~~
trapezoid.cpp:68:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<std::pair<long long int, long long int>, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |     for (int i = 0; i < vec.size(); i++){
      |                     ~~^~~~~~~~~~~~
trapezoid.cpp:69:40: warning: unused variable 'y' [-Wunused-variable]
   69 |         int id = vec[i].s,x=vec[i].f.f,y=vec[i].f.s;
      |                                        ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Incorrect 1 ms 340 KB Output isn't correct
3 Incorrect 1 ms 596 KB Output isn't correct
4 Incorrect 2 ms 724 KB Output isn't correct
5 Incorrect 4 ms 1236 KB Output isn't correct
6 Incorrect 6 ms 1876 KB Output isn't correct
7 Incorrect 7 ms 1632 KB Output isn't correct
8 Incorrect 12 ms 2332 KB Output isn't correct
9 Incorrect 24 ms 4728 KB Output isn't correct
10 Incorrect 40 ms 6928 KB Output isn't correct
11 Incorrect 62 ms 11848 KB Output isn't correct
12 Incorrect 141 ms 23608 KB Output isn't correct
13 Incorrect 167 ms 29204 KB Output isn't correct
14 Incorrect 210 ms 36616 KB Output isn't correct
15 Incorrect 219 ms 32692 KB Output isn't correct
16 Incorrect 259 ms 35716 KB Output isn't correct
17 Incorrect 265 ms 42128 KB Output isn't correct
18 Incorrect 202 ms 29492 KB Output isn't correct
19 Incorrect 263 ms 41988 KB Output isn't correct
20 Incorrect 297 ms 44300 KB Output isn't correct