#include <bits/stdc++.h>
using namespace std;
#define ll long long int
int g[105][105] = { }, a[105][105] = { };
int main() {
    int n; cin >> n;
    vector<ll> h(n+5), w(n+5);
    for (int i = 1; i <= n; i++) cin >> h[i];
    for (int i = 1; i <= n; i++) cin >> w[i];
    
    ll cur = 0;
    for (int id = 1; id <= n; id++) {
    	for (int i = cur+1; i <= cur + w[id]; i++) {
    		for (int j = 1; j <= h[id]; j++) {
    			g[i][j] = 1;
    		}
    	}
    	cur += w[id];
    }
    
    a[0][0] = 0;
    for (int i = 1; i < 105; i++) {
    	a[0][i] = a[0][i-1] + g[0][i];
    	a[i][0] = a[i-1][0] + g[i][0];
    }
    for (int i = 1; i < 105; i++) {
    	for (int j = 1; j < 105; j++) {
    		a[i][j] = a[i-1][j] + a[i][j-1] - a[i-1][j-1];
    		a[i][j] += g[i][j];
    	}
    }
    
    ll cnt = 0;
    for (int rh = 1; rh <= 50; rh++) {
    	for (int rw = 1; rw <= 50; rw++) {
    		for (int x = 0; x + rh < 105; x++) {
    			for (int y = 0; y + rw < 105; y++) {
    				ll sum = a[x+rh][y+rw];
    				sum -= a[x][y+rw];
    				sum -= a[x+rh][y];
    				sum += a[x][y];
    				
    				if (sum == rh * rw) {
    					cnt++; 
    				}
    			}
    		}
    	}
    }
    cout << cnt;
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |