답안 #52764

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
52764 2018-06-26T17:02:53 Z Smelskiy 운세 보기 2 (JOI14_fortune_telling2) C++14
4 / 100
3000 ms 1828 KB
#include <bits/stdc++.h>
using namespace std;




int n,m;
int q[2000005];
int t1[2000005];
int t2[2000005];
int t3[2000005];
int t4[2000005];
pair<int,int> a[200005];
int sz;


inline void push(int x) {
    if (!q[x]) return;
    q[x+x]^=1;
    q[x+x+1]^=1;
    q[x]=0;
    swap(t1[x+x],t2[x+x]);
    swap(t1[x+x+1],t2[x+x+1]);
    swap(t3[x+x],t4[x+x]);
    swap(t3[x+x+1],t4[x+x+1]);
}

void dfs(int l,int r,int x,int y) {
    if (t3[x]>y) return;
    if (t1[x]<=y) {
        swap(t1[x],t2[x]);
        swap(t3[x],t4[x]);
        q[x]^=1;
        return;
    }
    if (l==r) return;
    int mid=(l+r)>>1;
    push(x);
    dfs(l,mid,x+x,y);
    dfs(mid+1,r,x+x+1,y);
    t1[x]=max(t1[x+x],t1[x+x+1]);
    t2[x]=max(t2[x+x],t2[x+x+1]);
    t3[x]=min(t3[x+x],t3[x+x+1]);
    t4[x]=min(t4[x+x],t4[x+x+1]);
}

long long ans=0;
void solve(int l,int r,int x) {
    if (l>n) return;
    if (l==r) {
        ans+=t1[x];
        return;
    }
    push(x);
    int mid=(l+r)>>1;
    solve(l,mid,x+x);
    solve(mid+1,r,x+x+1);
}

inline bool cmp(pair<int,int> x,pair<int,int> y) {
    return max(x.first,x.second)<max(y.first,y.second);
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    cin>>n>>m;
    for (int i=1;i<=n;++i) {
        cin>>a[i].first>>a[i].second;
    }
    random_shuffle(a+1,a+n+1);
    sz=1;
    while (sz<n) sz+=sz;
    for (int i=1;i<=n;++i) {
        t1[sz+i-1]=a[i].first;
        t2[sz+i-1]=a[i].second;
        t3[sz+i-1]=a[i].first;
        t4[sz+i-1]=a[i].second;
    }
    for (int i=sz-1;i>0;--i) {
        t1[i]=max(t1[i+i],t1[i+i+1]);
        t2[i]=max(t2[i+i],t2[i+i+1]);
        t3[i]=min(t3[i+i],t3[i+i+1]);
        t4[i]=min(t4[i+i],t4[i+i+1]);
    }
    int x;
    for (int i=1;i<=m;++i) {
        cin>>x;
        dfs(1,sz,1,x);
    }
    solve(1,sz,1);
    cout<<ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
2 Correct 7 ms 492 KB Output is correct
3 Correct 13 ms 492 KB Output is correct
4 Correct 15 ms 556 KB Output is correct
5 Correct 14 ms 556 KB Output is correct
6 Correct 12 ms 604 KB Output is correct
7 Correct 15 ms 604 KB Output is correct
8 Correct 6 ms 604 KB Output is correct
9 Correct 3 ms 604 KB Output is correct
10 Correct 17 ms 604 KB Output is correct
11 Correct 14 ms 604 KB Output is correct
12 Correct 15 ms 604 KB Output is correct
13 Correct 14 ms 716 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
2 Correct 7 ms 492 KB Output is correct
3 Correct 13 ms 492 KB Output is correct
4 Correct 15 ms 556 KB Output is correct
5 Correct 14 ms 556 KB Output is correct
6 Correct 12 ms 604 KB Output is correct
7 Correct 15 ms 604 KB Output is correct
8 Correct 6 ms 604 KB Output is correct
9 Correct 3 ms 604 KB Output is correct
10 Correct 17 ms 604 KB Output is correct
11 Correct 14 ms 604 KB Output is correct
12 Correct 15 ms 604 KB Output is correct
13 Correct 14 ms 716 KB Output is correct
14 Correct 1151 ms 1188 KB Output is correct
15 Execution timed out 3039 ms 1828 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
2 Correct 7 ms 492 KB Output is correct
3 Correct 13 ms 492 KB Output is correct
4 Correct 15 ms 556 KB Output is correct
5 Correct 14 ms 556 KB Output is correct
6 Correct 12 ms 604 KB Output is correct
7 Correct 15 ms 604 KB Output is correct
8 Correct 6 ms 604 KB Output is correct
9 Correct 3 ms 604 KB Output is correct
10 Correct 17 ms 604 KB Output is correct
11 Correct 14 ms 604 KB Output is correct
12 Correct 15 ms 604 KB Output is correct
13 Correct 14 ms 716 KB Output is correct
14 Correct 1151 ms 1188 KB Output is correct
15 Execution timed out 3039 ms 1828 KB Time limit exceeded
16 Halted 0 ms 0 KB -