比赛 |
2024暑期C班集训2 |
评测结果 |
AAATTTTTTT |
题目名称 |
雨滴之歌 |
最终得分 |
30 |
用户昵称 |
darkMoon |
运行时间 |
7.000 s |
代码语言 |
C++ |
内存使用 |
8.29 MiB |
提交时间 |
2024-07-02 11:08:38 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("expansion.in");
ofstream fout("expansion.out");
auto mread = [](){int x;fin >> x;return x;};
const int N = 2e5 + 5;
int n = mread(), m = mread(), ans, s[N], a[N], b[N], t[N];
int v(int x, int y){
return a[x] + b[y];
}
signed main(){
for(int i = 1; i <= n; i ++)
a[i] = mread();
for(int i = 1; i <= m; i ++)
b[i] = mread();
for(int i = n; i >= 1; i --){
for(int j = 1; j <= m; j ++)
t[j] = 0;
if(v(i, m) >= 0){
s[m] ++;
}
for(int j = 1; j <= m; j ++){
if(s[j]){
if(v(i, j) >= 0){
for(int k = j - 1; k >= 0; k --){
if(k == 0 || v(i, k) < 0){
t[k + 1] += s[j];
break;
}
}
}
else{
for(int k = j + 1; k <= m; k ++){
if(v(i, k) >= 0){
t[k] += s[j];
break;
}
}
}
}
}
for(int j = 1; j <= m; j ++){
s[j] = t[j];
// printf("%lld ", s[j]);
}
for(int j = 1; j <= m; j ++){
if(v(i, j) < 0)
break;
ans += s[j];
}
// printf("*** %lld\n", ans);
}
fout << ans;
return 0;
}