Submission #580342

# Submission time Handle Problem Language Result Execution time Memory
580342 2022-06-21T06:10:01 Z 반딧불(#8355) Uplifting Excursion (BOI22_vault) C++17
0 / 100
5000 ms 19180 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const int LIM = 600000;
const int LIM2 = LIM+LIM;

void imp(){
    puts("impossible");
    exit(0);
}

int n, k;
int arr[702];
int DP[2][1200002];
pair<int, int> dq[1200002];
int fr, sz;

int main(){
    scanf("%d %d", &n, &k);
    for(int i=0; i<=n+n; i++) scanf("%d", &arr[i]);
    if(k<=-LIM || k>=LIM) imp();
    for(int i=0; i<=LIM2; i++) DP[0][i] = DP[1][i] = -1e9;
    DP[1][LIM] = 0;

    for(int i=0; i<=n+n; i++){ /// ����ġ: i+n
        int b = i%2;
        if(i>n){ /// ���� ����ġ
            int ri = i-n;
            for(int s=0; s<i+ri; s++){
                fr=sz=0;
                for(int j=s, p=0; j<=LIM2; j+=ri, p++){
                    DP[b][j] = max(DP[b][j], DP[!b][j]);
                    while(fr!=sz && dq[fr].second < p) fr++;
                    pair<int, int> np = make_pair(DP[!b][j] - p, p+arr[i]);
                    while(fr!=sz && dq[sz-1].first < np.first) sz--;
                    dq[sz++] = np;
                    DP[b][j] = max(DP[b][j], dq[fr].first + p);
                }
            }
        }
        else if(i==n){
            for(int j=0; j<=LIM2; j++) DP[b][j] = max(DP[b][j], DP[!b][j]) + arr[i];
        }
        else{
            int ri = n-i;
            for(int s=0; s<i+ri; s++){
                fr=sz=0;
                for(int j=LIM2-s, p=0; j>=0; j-=ri, p++){
                    DP[b][j] = max(DP[b][j], DP[!b][j]);
                    while(fr!=sz && dq[fr].second < p) fr++;
                    pair<int, int> np = make_pair(DP[!b][j] - p, p+arr[i]);
                    while(fr!=sz && dq[sz-1].first < np.first) sz--;
                    dq[sz++] = np;
                    DP[b][j] = max(DP[b][j], dq[fr].first + p);
                }
            }
        }
    }

    if(DP[0][LIM+k] <= 0) imp();
    printf("%d", DP[0][LIM+k]);
}

Compilation message

vault.cpp: In function 'int main()':
vault.cpp:21:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |     scanf("%d %d", &n, &k);
      |     ~~~~~^~~~~~~~~~~~~~~~~
vault.cpp:22:36: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |     for(int i=0; i<=n+n; i++) scanf("%d", &arr[i]);
      |                               ~~~~~^~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 56 ms 19152 KB Output is correct
2 Correct 83 ms 19000 KB Output is correct
3 Correct 27 ms 19048 KB Output is correct
4 Correct 433 ms 19048 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 4797 ms 19180 KB Output is correct
7 Correct 4555 ms 18972 KB Output is correct
8 Execution timed out 5067 ms 19132 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 56 ms 19152 KB Output is correct
2 Correct 83 ms 19000 KB Output is correct
3 Correct 27 ms 19048 KB Output is correct
4 Correct 433 ms 19048 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 4797 ms 19180 KB Output is correct
7 Correct 4555 ms 18972 KB Output is correct
8 Execution timed out 5067 ms 19132 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 460 ms 19068 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 460 ms 19068 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 460 ms 19068 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 56 ms 19152 KB Output is correct
2 Correct 83 ms 19000 KB Output is correct
3 Correct 27 ms 19048 KB Output is correct
4 Correct 433 ms 19048 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 4797 ms 19180 KB Output is correct
7 Correct 4555 ms 18972 KB Output is correct
8 Execution timed out 5067 ms 19132 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 460 ms 19068 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 56 ms 19152 KB Output is correct
2 Correct 83 ms 19000 KB Output is correct
3 Correct 27 ms 19048 KB Output is correct
4 Correct 433 ms 19048 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 4797 ms 19180 KB Output is correct
7 Correct 4555 ms 18972 KB Output is correct
8 Execution timed out 5067 ms 19132 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 460 ms 19068 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 56 ms 19152 KB Output is correct
2 Correct 83 ms 19000 KB Output is correct
3 Correct 27 ms 19048 KB Output is correct
4 Correct 433 ms 19048 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 4797 ms 19180 KB Output is correct
7 Correct 4555 ms 18972 KB Output is correct
8 Execution timed out 5067 ms 19132 KB Time limit exceeded
9 Halted 0 ms 0 KB -