답안 #52759

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




int n,m;
int q[2000005];
int t1[2000005];
int t2[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]);
}

void dfs(int l,int r,int x,int y) {
    if (t1[x]<=y) {
        swap(t1[x],t2[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]);
}

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);
}

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;
    }
    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]);
    }
    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 9 ms 548 KB Output is correct
3 Correct 15 ms 640 KB Output is correct
4 Correct 16 ms 716 KB Output is correct
5 Correct 17 ms 716 KB Output is correct
6 Correct 14 ms 716 KB Output is correct
7 Correct 15 ms 716 KB Output is correct
8 Correct 15 ms 740 KB Output is correct
9 Correct 13 ms 788 KB Output is correct
10 Correct 14 ms 836 KB Output is correct
11 Correct 14 ms 972 KB Output is correct
12 Correct 19 ms 972 KB Output is correct
13 Correct 17 ms 972 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
2 Correct 9 ms 548 KB Output is correct
3 Correct 15 ms 640 KB Output is correct
4 Correct 16 ms 716 KB Output is correct
5 Correct 17 ms 716 KB Output is correct
6 Correct 14 ms 716 KB Output is correct
7 Correct 15 ms 716 KB Output is correct
8 Correct 15 ms 740 KB Output is correct
9 Correct 13 ms 788 KB Output is correct
10 Correct 14 ms 836 KB Output is correct
11 Correct 14 ms 972 KB Output is correct
12 Correct 19 ms 972 KB Output is correct
13 Correct 17 ms 972 KB Output is correct
14 Correct 1278 ms 1500 KB Output is correct
15 Execution timed out 3032 ms 1972 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
2 Correct 9 ms 548 KB Output is correct
3 Correct 15 ms 640 KB Output is correct
4 Correct 16 ms 716 KB Output is correct
5 Correct 17 ms 716 KB Output is correct
6 Correct 14 ms 716 KB Output is correct
7 Correct 15 ms 716 KB Output is correct
8 Correct 15 ms 740 KB Output is correct
9 Correct 13 ms 788 KB Output is correct
10 Correct 14 ms 836 KB Output is correct
11 Correct 14 ms 972 KB Output is correct
12 Correct 19 ms 972 KB Output is correct
13 Correct 17 ms 972 KB Output is correct
14 Correct 1278 ms 1500 KB Output is correct
15 Execution timed out 3032 ms 1972 KB Time limit exceeded
16 Halted 0 ms 0 KB -