제출 #1155689

#제출 시각아이디문제언어결과실행 시간메모리
1155689adiyerFlooding Wall (BOI24_wall)C++20
8 / 100
145 ms472 KiB
#include <bits/stdc++.h>

#define all(x) x.begin(), x.end()
#define len(s) (ll) s.size()
#define pb push_back
#define F first 
#define S second 

using namespace std;

typedef long long ll;

const int N = 5e5 + 17; 
const int P = 31;
const int mod = 1e9 + 7;
const ll inf = 1e18;

ll n, res;
ll a[N], b[N], h[N], p[N], s[N];

signed main(){
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  cin >> n;
  for(ll i = 1; i <= n; i++) cin >> a[i];
  for(ll i = 1; i <= n; i++) cin >> b[i];
  for(ll msk = 0; msk < (1 << n); msk++){
    for(ll i = 0; i < n; i++){
      if((msk >> i & 1)) h[i + 1] = a[i + 1];
      else h[i + 1] = b[i + 1];
    }
    ll cur = res;
    for(ll i = 1; i <= n; i++) p[i] = max(p[i - 1], h[i]);
    for(ll i = n; i >= 1; i--) s[i] = max(s[i + 1], h[i]);
    for(ll i = 1; i <= n; i++) res += max(min(p[i - 1], s[i + 1]) - h[i], 0ll);
    res %= mod;
  }
  cout << res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...