답안 #152426

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
152426 2019-09-08T02:06:18 Z arnold518 Sushi (JOI16_sushi) C++14
20 / 100
12000 ms 89716 KB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 400000;
const int MAXQ = 25000;

int N, Q, A[MAXN+10], SQ;
priority_queue<int> PQ1[MAXN+10];
priority_queue<int, vector<int>, greater<int>> PQ2[MAXN+10];

int solve(int S, int T, int P)
{
    int i, j;
    if(S/SQ==T/SQ)
    {
        int l=max(1, S/SQ*SQ), r=min(N, S/SQ*SQ+SQ-1);
        for(i=l; i<=r; i++)
        {
            PQ2[S/SQ].push(A[i]);
            A[i]=PQ2[S/SQ].top(); PQ2[S/SQ].pop();
        }
        while(!PQ2[S/SQ].empty()) PQ2[S/SQ].pop();
        while(!PQ1[S/SQ].empty()) PQ1[S/SQ].pop();
        for(i=S; i<=T; i++) if(P<A[i]) swap(A[i], P);
        for(i=l; i<=r; i++) PQ1[S/SQ].push(A[i]);
    }
    else
    {
        int l, r;
        l=max(1, S/SQ*SQ), r=min(N, S/SQ*SQ+SQ-1);
        for(i=l; i<=r; i++)
        {
            PQ2[S/SQ].push(A[i]);
            A[i]=PQ2[S/SQ].top(); PQ2[S/SQ].pop();
        }
        while(!PQ2[S/SQ].empty()) PQ2[S/SQ].pop();
        while(!PQ1[S/SQ].empty()) PQ1[S/SQ].pop();
        for(i=S; i<=r; i++) if(P<A[i]) swap(A[i], P);
        for(i=l; i<=r; i++) PQ1[S/SQ].push(A[i]);

        for(i=S/SQ+1; i<T/SQ; i++)
        {
            PQ1[i].push(P);
            PQ2[i].push(P);
            P=PQ1[i].top();
            PQ1[i].pop();
        }

        l=max(1, T/SQ*SQ), r=min(N, T/SQ*SQ+SQ-1);
        for(i=l; i<=r; i++)
        {
            PQ2[T/SQ].push(A[i]);
            A[i]=PQ2[T/SQ].top(); PQ2[T/SQ].pop();
        }
        while(!PQ2[T/SQ].empty()) PQ2[T/SQ].pop();
        while(!PQ1[T/SQ].empty()) PQ1[T/SQ].pop();
        for(i=l; i<=T; i++) if(P<A[i]) swap(A[i], P);
        for(i=l; i<=r; i++) PQ1[T/SQ].push(A[i]);
    }
    return P;
}

int main()
{
    int i, j;

    scanf("%d%d", &N, &Q);
    SQ=800;

    priority_queue<int> PQ;
    for(i=1; i<=N; i++)
    {
        scanf("%d", &A[i]);
        PQ1[i/SQ].push(A[i]);
    }

    while(Q--)
    {
        int S, T, P;
        scanf("%d%d%d", &S, &T, &P);
        if(S<=T) printf("%d\n", solve(S, T, P));
        else
        {
            P=solve(S, N, P);
            printf("%d\n", solve(1, T, P));
        }
/*
        for(i=0; i<=N/SQ; i++)
        {
            printf("bucket : %d\n", i);
            vector<int> V;
            printf("PQ1 : ");
            while(!PQ1[i].empty()) printf("%d ", PQ1[i].top()), V.push_back(PQ1[i].top()), PQ1[i].pop(); printf("\n");
            while(!V.empty()) PQ1[i].push(V.back()), V.pop_back();
            printf("PQ2 : ");
            while(!PQ2[i].empty()) printf("%d ", PQ2[i].top()), V.push_back(PQ2[i].top()), PQ2[i].pop(); printf("\n");
            while(!V.empty()) PQ2[i].push(V.back()), V.pop_back();
        }
        for(i=1; i<=N; i++) printf("%d ", A[i]); printf("\n");
        printf("============\n");
*/
    }
}

Compilation message

sushi.cpp: In function 'int solve(int, int, int)':
sushi.cpp:17:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
sushi.cpp: In function 'int main()':
sushi.cpp:69:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
sushi.cpp:71:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &N, &Q);
     ~~~~~^~~~~~~~~~~~~~~~
sushi.cpp:77:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &A[i]);
         ~~~~~^~~~~~~~~~~~~
sushi.cpp:84:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &S, &T, &P);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 463 ms 25604 KB Output is correct
2 Correct 462 ms 25464 KB Output is correct
3 Correct 478 ms 25592 KB Output is correct
4 Correct 457 ms 25720 KB Output is correct
5 Correct 462 ms 25476 KB Output is correct
6 Correct 465 ms 25596 KB Output is correct
7 Correct 296 ms 25468 KB Output is correct
8 Correct 296 ms 25336 KB Output is correct
9 Correct 468 ms 25720 KB Output is correct
10 Correct 461 ms 25640 KB Output is correct
11 Correct 457 ms 25688 KB Output is correct
12 Correct 461 ms 25720 KB Output is correct
13 Correct 477 ms 25464 KB Output is correct
14 Correct 637 ms 25592 KB Output is correct
15 Correct 632 ms 25692 KB Output is correct
16 Correct 232 ms 25748 KB Output is correct
17 Correct 24 ms 25336 KB Output is correct
18 Correct 25 ms 25336 KB Output is correct
19 Correct 25 ms 25336 KB Output is correct
20 Correct 24 ms 25336 KB Output is correct
21 Correct 25 ms 25336 KB Output is correct
22 Correct 25 ms 25336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8013 ms 89176 KB Output is correct
2 Correct 8071 ms 89104 KB Output is correct
3 Correct 4414 ms 87856 KB Output is correct
4 Correct 8071 ms 89336 KB Output is correct
5 Correct 4563 ms 89716 KB Output is correct
6 Correct 7957 ms 89368 KB Output is correct
7 Correct 7940 ms 89188 KB Output is correct
8 Correct 7918 ms 89556 KB Output is correct
9 Correct 3917 ms 87660 KB Output is correct
10 Correct 4572 ms 89296 KB Output is correct
11 Correct 3890 ms 87652 KB Output is correct
12 Correct 7209 ms 89216 KB Output is correct
13 Correct 8039 ms 89204 KB Output is correct
14 Correct 8154 ms 89236 KB Output is correct
15 Correct 2538 ms 87936 KB Output is correct
16 Correct 8052 ms 89428 KB Output is correct
17 Correct 7273 ms 89404 KB Output is correct
18 Correct 7971 ms 89416 KB Output is correct
19 Correct 8064 ms 89592 KB Output is correct
20 Correct 5150 ms 89684 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 463 ms 25604 KB Output is correct
2 Correct 462 ms 25464 KB Output is correct
3 Correct 478 ms 25592 KB Output is correct
4 Correct 457 ms 25720 KB Output is correct
5 Correct 462 ms 25476 KB Output is correct
6 Correct 465 ms 25596 KB Output is correct
7 Correct 296 ms 25468 KB Output is correct
8 Correct 296 ms 25336 KB Output is correct
9 Correct 468 ms 25720 KB Output is correct
10 Correct 461 ms 25640 KB Output is correct
11 Correct 457 ms 25688 KB Output is correct
12 Correct 461 ms 25720 KB Output is correct
13 Correct 477 ms 25464 KB Output is correct
14 Correct 637 ms 25592 KB Output is correct
15 Correct 632 ms 25692 KB Output is correct
16 Correct 232 ms 25748 KB Output is correct
17 Correct 24 ms 25336 KB Output is correct
18 Correct 25 ms 25336 KB Output is correct
19 Correct 25 ms 25336 KB Output is correct
20 Correct 24 ms 25336 KB Output is correct
21 Correct 25 ms 25336 KB Output is correct
22 Correct 25 ms 25336 KB Output is correct
23 Correct 8013 ms 89176 KB Output is correct
24 Correct 8071 ms 89104 KB Output is correct
25 Correct 4414 ms 87856 KB Output is correct
26 Correct 8071 ms 89336 KB Output is correct
27 Correct 4563 ms 89716 KB Output is correct
28 Correct 7957 ms 89368 KB Output is correct
29 Correct 7940 ms 89188 KB Output is correct
30 Correct 7918 ms 89556 KB Output is correct
31 Correct 3917 ms 87660 KB Output is correct
32 Correct 4572 ms 89296 KB Output is correct
33 Correct 3890 ms 87652 KB Output is correct
34 Correct 7209 ms 89216 KB Output is correct
35 Correct 8039 ms 89204 KB Output is correct
36 Correct 8154 ms 89236 KB Output is correct
37 Correct 2538 ms 87936 KB Output is correct
38 Correct 8052 ms 89428 KB Output is correct
39 Correct 7273 ms 89404 KB Output is correct
40 Correct 7971 ms 89416 KB Output is correct
41 Correct 8064 ms 89592 KB Output is correct
42 Correct 5150 ms 89684 KB Output is correct
43 Correct 11000 ms 34448 KB Output is correct
44 Correct 10978 ms 34476 KB Output is correct
45 Correct 7788 ms 32396 KB Output is correct
46 Correct 9624 ms 34416 KB Output is correct
47 Correct 11000 ms 34868 KB Output is correct
48 Correct 11299 ms 34880 KB Output is correct
49 Correct 11732 ms 35048 KB Output is correct
50 Correct 10208 ms 35692 KB Output is correct
51 Correct 11642 ms 35888 KB Output is correct
52 Execution timed out 12041 ms 39636 KB Time limit exceeded
53 Halted 0 ms 0 KB -