이 문제는 비교적 쉽게 풀 수 있었다.
A배열과 B배열의 누적 합을 미리 전처리 해준 뒤, MAP 자료구조를 이용해 해결했다.
자료형을 int가 아닌 long long으로 해야한다.
#include <iostream>
#include <map>
using namespace std;
int a[1001];
int b[1001];
map<long long , long long> sub_sum;
int main() {
long long T;
int n, m;
cin >> T;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
cin >> m;
for (int i = 0; i < m; i++)
cin >> b[i];
for (int i = 0; i < n; i++) { // 개수
for (int j = 0; j < n - i; j++) { // 시작
int idx = j; long long sum = 0;
while (idx <= i + j) {
sum += a[idx++];
}
sub_sum[sum]++;
}
}
long long ret = 0;
for (int i = 0; i < m; i++) { // 개수
for (int j = 0; j < m - i; j++) { // 시작
int idx = j; long long sum = 0;
while (idx <= i + j) {
sum += b[idx++];
}
ret += sub_sum[T - sum];
}
}
cout << ret;
}