답안 #153691

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
153691 2019-09-15T06:42:19 Z semiauto Hedgehog Daniyar and Algorithms (IZhO19_sortbooks) C++14
100 / 100
2869 ms 262144 KB
#include <bits/stdc++.h>
using namespace std;
int n,m,i,j,l,r,ans,N=1024*1024;
int mas[1000001],val[1000001],tree[2048*1024];
pair <int,int> p[1000001][20];
vector <int> v[1000001];
inline int maxi(int a,int b) {
    if (a>b)
        return a;
    return b;
}
void dfs(int u) {
    int i;
    for (i=1;i<20;i++)
        if (p[p[u][i-1].first][i-1].first)
            p[u][i]={p[p[u][i-1].first][i-1].first,maxi(p[u][i-1].second,p[p[u][i-1].first][i-1].second)};
    for (i=0;i<(v[u].size());i++)
        dfs(v[u][i]);
}
int solve(int x,int y,int p,int l,int r) {
    if (l>y || x>r)
        return 0;
    if (l>=x && r<=y)
        return tree[p];
    return maxi(solve(x,y,2*p,l,(l+r)/2),solve(x,y,2*p+1,(l+r)/2+1,r));
}
void build_tree(int p) {
    if (p>=N) {
        if ((p-N+1)<=n)
            tree[p]=mas[p-N+1];
        return;
    }
    build_tree(2*p);
    build_tree(2*p+1);
    tree[p]=maxi(tree[2*p],tree[2*p+1]);
}
int main() {
    scanf("%d %d",&n,&m);
    for (i=1;i<=n;i++)
        scanf("%d",&(mas[i]));
    build_tree(1);
    for (i=n;i>0;i--) {
        for (;r>0;r--)
            if (mas[val[r]]>=mas[i])
                break;
        p[i][0].first=val[r];
        if (val[r]>(i+1))
            p[i][0].second=mas[i]+solve(i+1+N-1,val[r]-1+N-1,1,N,2*N-1);
        v[val[r]].push_back(i);
        val[++r]=i;
    }
    for (i=0;i<(v[0].size());i++)
        dfs(v[0][i]);
    for (mas[0]=1;mas[0]<=m;mas[0]++) {
        scanf("%d %d %d",&l,&r,&j);
        if (l==r) {
            printf("1\n");
            continue;
        }
        ans=0;
        for (i=19;i>=0;i--)
            if (p[l][i].first && p[l][i].first<=r) {
                ans=maxi(ans,p[l][i].second);
                l=p[l][i].first;
            }
        if (r>l)
            ans=maxi(ans,mas[l]+solve(l+1+N-1,r+N-1,1,N,2*N-1));
        if (ans>j)
            printf("0\n");
        else
            printf("1\n");
    }
}

Compilation message

sortbooks.cpp: In function 'void dfs(int)':
sortbooks.cpp:17:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i=0;i<(v[u].size());i++)
              ~^~~~~~~~~~~~~~
sortbooks.cpp: In function 'int main()':
sortbooks.cpp:52:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i=0;i<(v[0].size());i++)
              ~^~~~~~~~~~~~~~
sortbooks.cpp:38:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d",&n,&m);
     ~~~~~^~~~~~~~~~~~~~~
sortbooks.cpp:40:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&(mas[i]));
         ~~~~~^~~~~~~~~~~~~~~~
sortbooks.cpp:55:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d %d",&l,&r,&j);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 34 ms 27896 KB Output is correct
2 Correct 34 ms 27896 KB Output is correct
3 Correct 35 ms 27920 KB Output is correct
4 Correct 34 ms 27896 KB Output is correct
5 Correct 33 ms 27896 KB Output is correct
6 Correct 35 ms 28024 KB Output is correct
7 Correct 35 ms 28024 KB Output is correct
8 Correct 35 ms 28024 KB Output is correct
9 Correct 35 ms 27996 KB Output is correct
10 Correct 35 ms 28044 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 34 ms 27896 KB Output is correct
2 Correct 34 ms 27896 KB Output is correct
3 Correct 35 ms 27920 KB Output is correct
4 Correct 34 ms 27896 KB Output is correct
5 Correct 33 ms 27896 KB Output is correct
6 Correct 35 ms 28024 KB Output is correct
7 Correct 35 ms 28024 KB Output is correct
8 Correct 35 ms 28024 KB Output is correct
9 Correct 35 ms 27996 KB Output is correct
10 Correct 35 ms 28044 KB Output is correct
11 Correct 36 ms 28156 KB Output is correct
12 Correct 39 ms 28796 KB Output is correct
13 Correct 40 ms 28856 KB Output is correct
14 Correct 40 ms 28792 KB Output is correct
15 Correct 48 ms 28892 KB Output is correct
16 Correct 39 ms 29020 KB Output is correct
17 Correct 39 ms 28920 KB Output is correct
18 Correct 39 ms 28980 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2033 ms 210488 KB Output is correct
2 Correct 2055 ms 210556 KB Output is correct
3 Correct 2025 ms 210560 KB Output is correct
4 Correct 2020 ms 210548 KB Output is correct
5 Correct 2844 ms 262144 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 191 ms 46764 KB Output is correct
2 Correct 176 ms 46588 KB Output is correct
3 Correct 210 ms 51712 KB Output is correct
4 Correct 218 ms 51576 KB Output is correct
5 Correct 215 ms 51604 KB Output is correct
6 Correct 145 ms 51228 KB Output is correct
7 Correct 149 ms 51448 KB Output is correct
8 Correct 180 ms 49756 KB Output is correct
9 Correct 80 ms 28792 KB Output is correct
10 Correct 184 ms 50072 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 34 ms 27896 KB Output is correct
2 Correct 34 ms 27896 KB Output is correct
3 Correct 35 ms 27920 KB Output is correct
4 Correct 34 ms 27896 KB Output is correct
5 Correct 33 ms 27896 KB Output is correct
6 Correct 35 ms 28024 KB Output is correct
7 Correct 35 ms 28024 KB Output is correct
8 Correct 35 ms 28024 KB Output is correct
9 Correct 35 ms 27996 KB Output is correct
10 Correct 35 ms 28044 KB Output is correct
11 Correct 36 ms 28156 KB Output is correct
12 Correct 39 ms 28796 KB Output is correct
13 Correct 40 ms 28856 KB Output is correct
14 Correct 40 ms 28792 KB Output is correct
15 Correct 48 ms 28892 KB Output is correct
16 Correct 39 ms 29020 KB Output is correct
17 Correct 39 ms 28920 KB Output is correct
18 Correct 39 ms 28980 KB Output is correct
19 Correct 397 ms 64876 KB Output is correct
20 Correct 403 ms 64800 KB Output is correct
21 Correct 348 ms 64872 KB Output is correct
22 Correct 347 ms 64840 KB Output is correct
23 Correct 348 ms 64840 KB Output is correct
24 Correct 378 ms 74916 KB Output is correct
25 Correct 379 ms 74904 KB Output is correct
26 Correct 449 ms 74932 KB Output is correct
27 Correct 435 ms 74952 KB Output is correct
28 Correct 580 ms 74984 KB Output is correct
29 Correct 478 ms 74932 KB Output is correct
30 Correct 475 ms 75016 KB Output is correct
31 Correct 480 ms 75048 KB Output is correct
32 Correct 479 ms 75112 KB Output is correct
33 Correct 474 ms 75036 KB Output is correct
34 Correct 289 ms 75064 KB Output is correct
35 Correct 283 ms 75056 KB Output is correct
36 Correct 289 ms 75000 KB Output is correct
37 Correct 285 ms 75000 KB Output is correct
38 Correct 285 ms 75172 KB Output is correct
39 Correct 421 ms 71880 KB Output is correct
40 Correct 304 ms 58052 KB Output is correct
41 Correct 369 ms 71204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 34 ms 27896 KB Output is correct
2 Correct 34 ms 27896 KB Output is correct
3 Correct 35 ms 27920 KB Output is correct
4 Correct 34 ms 27896 KB Output is correct
5 Correct 33 ms 27896 KB Output is correct
6 Correct 35 ms 28024 KB Output is correct
7 Correct 35 ms 28024 KB Output is correct
8 Correct 35 ms 28024 KB Output is correct
9 Correct 35 ms 27996 KB Output is correct
10 Correct 35 ms 28044 KB Output is correct
11 Correct 36 ms 28156 KB Output is correct
12 Correct 39 ms 28796 KB Output is correct
13 Correct 40 ms 28856 KB Output is correct
14 Correct 40 ms 28792 KB Output is correct
15 Correct 48 ms 28892 KB Output is correct
16 Correct 39 ms 29020 KB Output is correct
17 Correct 39 ms 28920 KB Output is correct
18 Correct 39 ms 28980 KB Output is correct
19 Correct 2033 ms 210488 KB Output is correct
20 Correct 2055 ms 210556 KB Output is correct
21 Correct 2025 ms 210560 KB Output is correct
22 Correct 2020 ms 210548 KB Output is correct
23 Correct 2844 ms 262144 KB Output is correct
24 Correct 191 ms 46764 KB Output is correct
25 Correct 176 ms 46588 KB Output is correct
26 Correct 210 ms 51712 KB Output is correct
27 Correct 218 ms 51576 KB Output is correct
28 Correct 215 ms 51604 KB Output is correct
29 Correct 145 ms 51228 KB Output is correct
30 Correct 149 ms 51448 KB Output is correct
31 Correct 180 ms 49756 KB Output is correct
32 Correct 80 ms 28792 KB Output is correct
33 Correct 184 ms 50072 KB Output is correct
34 Correct 397 ms 64876 KB Output is correct
35 Correct 403 ms 64800 KB Output is correct
36 Correct 348 ms 64872 KB Output is correct
37 Correct 347 ms 64840 KB Output is correct
38 Correct 348 ms 64840 KB Output is correct
39 Correct 378 ms 74916 KB Output is correct
40 Correct 379 ms 74904 KB Output is correct
41 Correct 449 ms 74932 KB Output is correct
42 Correct 435 ms 74952 KB Output is correct
43 Correct 580 ms 74984 KB Output is correct
44 Correct 478 ms 74932 KB Output is correct
45 Correct 475 ms 75016 KB Output is correct
46 Correct 480 ms 75048 KB Output is correct
47 Correct 479 ms 75112 KB Output is correct
48 Correct 474 ms 75036 KB Output is correct
49 Correct 289 ms 75064 KB Output is correct
50 Correct 283 ms 75056 KB Output is correct
51 Correct 289 ms 75000 KB Output is correct
52 Correct 285 ms 75000 KB Output is correct
53 Correct 285 ms 75172 KB Output is correct
54 Correct 421 ms 71880 KB Output is correct
55 Correct 304 ms 58052 KB Output is correct
56 Correct 369 ms 71204 KB Output is correct
57 Correct 2078 ms 210584 KB Output is correct
58 Correct 2068 ms 210560 KB Output is correct
59 Correct 1969 ms 210704 KB Output is correct
60 Correct 1947 ms 210820 KB Output is correct
61 Correct 1966 ms 210608 KB Output is correct
62 Correct 1994 ms 210640 KB Output is correct
63 Correct 2004 ms 262144 KB Output is correct
64 Correct 1987 ms 262144 KB Output is correct
65 Correct 2724 ms 262144 KB Output is correct
66 Correct 2722 ms 262144 KB Output is correct
67 Correct 2811 ms 262144 KB Output is correct
68 Correct 2796 ms 262144 KB Output is correct
69 Correct 2728 ms 262144 KB Output is correct
70 Correct 2818 ms 262144 KB Output is correct
71 Correct 2869 ms 262144 KB Output is correct
72 Correct 2770 ms 262144 KB Output is correct
73 Correct 1494 ms 262144 KB Output is correct
74 Correct 1485 ms 262144 KB Output is correct
75 Correct 1473 ms 262144 KB Output is correct
76 Correct 1498 ms 262144 KB Output is correct
77 Correct 1458 ms 262144 KB Output is correct
78 Correct 2238 ms 253804 KB Output is correct
79 Correct 1463 ms 146496 KB Output is correct
80 Correct 2097 ms 249128 KB Output is correct