Submission #1003521

# Submission time Handle Problem Language Result Execution time Memory
1003521 2024-06-20T12:17:33 Z vjudge1 Flooding Wall (BOI24_wall) C++17
44 / 100
5000 ms 1468 KB
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math,inline")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,lzcnt,mmx,abm,avx,avx2,fma")
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define all(x) x.begin(), x.end()

const int N = 1e4, mod = 1e9+7;

int n, a[N], b[N], pre[N], suf[N], pw[N];
vector<pair<int, int>> cp;

signed main() {
  ios::sync_with_stdio(false); cin.tie(nullptr);

  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> b[i];
    if (a[i] > b[i]) swap(a[i], b[i]);
  }

  pw[0] = 1;
  for (int i = 1; i < n; i++) {
    pw[i] = pw[i-1] * 2 % mod;
  }

    vector<int> u(n*2);
    u.push_back(0);
    for (int i = 0; i < n; i++) {
      u[i*2] = a[i];
      u[i*2 + 1] = b[i];
    }
    sort(all(u));
    u.erase(unique(all(u)), u.end());

    int sz = u.size();
    cp.reserve(sz);
    for (int i = 0; i < sz; i++) {
      cp.push_back(make_pair(u[i], u[i]));

      if (i+1 < sz && u[i]+1 <= u[i+1]-1) cp.push_back(make_pair(u[i]+1, u[i+1]-1));
    }
    sz = cp.size();

    int ans = 0;
    for (int j = 0; j+1 < sz; j++) {
      for (int i = 0; i < n; i++) {
        pre[i] = (i ? pre[i-1] : 1);
        
        if (b[i] <= cp[j].second) {
          pre[i] *= 2;
          pre[i] %= mod;
        }
        else if (a[i] > cp[j].second) pre[i] = 0;
      }
    
      for (int i = n-1; i >= 0; i--) {
        suf[i] = (i+1 < n ? suf[i+1] : 1);
        
        if (b[i] <= cp[j].second) {
          suf[i] *= 2;
          suf[i] %= mod;
        }
        else if (a[i] > cp[j].second) suf[i] = 0;
      }
    
      for (int i = 1; i < n-1; i++) {
        int x = 0;

        x += pw[n-1-i] * pre[i-1] % mod;
        x %= mod;

        x += pw[i] * suf[i+1] % mod;
        x %= mod;

        x = (x - pre[i-1] * suf[i+1] % mod + mod) % mod;

        if (a[i] < cp[j+1].first) {
          ans += (pw[n-1] - x + mod) % mod * (cp[j+1].second-cp[j+1].first+1) % mod;
          ans %= mod;
        }

        if (b[i] < cp[j+1].first) {
          ans += (pw[n-1] - x + mod) % mod * (cp[j+1].second-cp[j+1].first+1) % mod;
          ans %= mod;
        }
      }
    }

    cout << ans << "\n";
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 468 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 344 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 344 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 408 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 428 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 1 ms 344 KB Output is correct
17 Correct 1 ms 344 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 344 KB Output is correct
23 Correct 1 ms 344 KB Output is correct
24 Correct 0 ms 344 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 408 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 428 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 1 ms 344 KB Output is correct
17 Correct 1 ms 344 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 344 KB Output is correct
23 Correct 1 ms 344 KB Output is correct
24 Correct 0 ms 344 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 183 ms 956 KB Output is correct
28 Correct 194 ms 1116 KB Output is correct
29 Correct 2 ms 956 KB Output is correct
30 Correct 2 ms 956 KB Output is correct
31 Correct 4 ms 952 KB Output is correct
32 Correct 5 ms 956 KB Output is correct
33 Correct 6 ms 956 KB Output is correct
34 Correct 4 ms 956 KB Output is correct
35 Correct 4 ms 1104 KB Output is correct
36 Correct 6 ms 952 KB Output is correct
37 Correct 2 ms 952 KB Output is correct
38 Correct 2 ms 956 KB Output is correct
39 Correct 4 ms 956 KB Output is correct
40 Correct 4 ms 956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 468 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 344 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 344 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 0 ms 348 KB Output is correct
28 Correct 0 ms 408 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 428 KB Output is correct
33 Correct 0 ms 344 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
36 Correct 0 ms 348 KB Output is correct
37 Correct 1 ms 348 KB Output is correct
38 Correct 1 ms 344 KB Output is correct
39 Correct 1 ms 344 KB Output is correct
40 Correct 1 ms 348 KB Output is correct
41 Correct 1 ms 348 KB Output is correct
42 Correct 0 ms 348 KB Output is correct
43 Correct 0 ms 348 KB Output is correct
44 Correct 0 ms 344 KB Output is correct
45 Correct 1 ms 344 KB Output is correct
46 Correct 0 ms 344 KB Output is correct
47 Correct 0 ms 348 KB Output is correct
48 Correct 0 ms 348 KB Output is correct
49 Correct 183 ms 956 KB Output is correct
50 Correct 194 ms 1116 KB Output is correct
51 Correct 2 ms 956 KB Output is correct
52 Correct 2 ms 956 KB Output is correct
53 Correct 4 ms 952 KB Output is correct
54 Correct 5 ms 956 KB Output is correct
55 Correct 6 ms 956 KB Output is correct
56 Correct 4 ms 956 KB Output is correct
57 Correct 4 ms 1104 KB Output is correct
58 Correct 6 ms 952 KB Output is correct
59 Correct 2 ms 952 KB Output is correct
60 Correct 2 ms 956 KB Output is correct
61 Correct 4 ms 956 KB Output is correct
62 Correct 4 ms 956 KB Output is correct
63 Execution timed out 5057 ms 1468 KB Time limit exceeded
64 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 2 ms 956 KB Output is correct
11 Correct 2 ms 1208 KB Output is correct
12 Correct 2 ms 952 KB Output is correct
13 Correct 2 ms 956 KB Output is correct
14 Incorrect 0 ms 348 KB Output isn't correct
15 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 468 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 344 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 344 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 0 ms 348 KB Output is correct
28 Correct 0 ms 408 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 428 KB Output is correct
33 Correct 0 ms 344 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
36 Correct 0 ms 348 KB Output is correct
37 Correct 1 ms 348 KB Output is correct
38 Correct 1 ms 344 KB Output is correct
39 Correct 1 ms 344 KB Output is correct
40 Correct 1 ms 348 KB Output is correct
41 Correct 1 ms 348 KB Output is correct
42 Correct 0 ms 348 KB Output is correct
43 Correct 0 ms 348 KB Output is correct
44 Correct 0 ms 344 KB Output is correct
45 Correct 1 ms 344 KB Output is correct
46 Correct 0 ms 344 KB Output is correct
47 Correct 0 ms 348 KB Output is correct
48 Correct 0 ms 348 KB Output is correct
49 Correct 183 ms 956 KB Output is correct
50 Correct 194 ms 1116 KB Output is correct
51 Correct 2 ms 956 KB Output is correct
52 Correct 2 ms 956 KB Output is correct
53 Correct 4 ms 952 KB Output is correct
54 Correct 5 ms 956 KB Output is correct
55 Correct 6 ms 956 KB Output is correct
56 Correct 4 ms 956 KB Output is correct
57 Correct 4 ms 1104 KB Output is correct
58 Correct 6 ms 952 KB Output is correct
59 Correct 2 ms 952 KB Output is correct
60 Correct 2 ms 956 KB Output is correct
61 Correct 4 ms 956 KB Output is correct
62 Correct 4 ms 956 KB Output is correct
63 Execution timed out 5057 ms 1468 KB Time limit exceeded
64 Halted 0 ms 0 KB -