[语言月赛202303] Milk Sales S
题目描述
Farmer John 正在售卖两款牛奶,分别为 A 型牛奶和 B 型牛奶。
Farmer John 已经售卖了 n n n 个月这两种牛奶,得到了一份数据 a 1 , a 2 , ⋯ a n a _ 1, a _ 2, \cdots a _ n a1,a2,⋯an 和 b 1 , b 2 , ⋯ , b n b _ 1, b _ 2, \cdots, b _ n b1,b2,⋯,bn,分别代表 A、B 型牛奶每个月的销量。
其中, a i a _ i ai 代表 A 型牛奶第 i i i 个月的销量, b i b _ i bi 代表 B 型牛奶分别的销量,二者单位均为盒。
现在,Farmer John 想要知道,在这 n n n 个月中,在最少经过几个月后,B 型牛奶的累计售出的盒数超过 A 型牛奶累计售出的盒数。
形式化的讲,请你求出最小的 x x x,使 ∑ i = 1 x a i < ∑ i = 1 x b i \sum \limits _{i=1}^x a_i<\sum \limits _{i=1}^x b_i i=1∑xai<i=1∑xbi。
输入格式
输入共三行。
第一行为一个整数 n n n,代表 Farmer John 售卖牛奶的月份数。
第二行为 n n n 个整数 a 1 , a 2 , ⋯ , a n a _ 1, a _ 2, \cdots, a _ n a1,a2,⋯,an,分别代表这 n n n 个月中 A 型牛奶每个月的销量(单位为盒)。
第三行为 n n n 个整数 b 1 , b 2 , ⋯ , b n b _ 1, b _ 2, \cdots, b _ n b1,b2,⋯,bn,分别代表这 n n n 个月中 B 型牛奶每个月的销量(单位为盒)。
输出格式
输出共一行一个整数 x x x,代表在最少经过 x x x 个月后,B 型牛奶的累计售出的盒数超过 A 型牛奶累计售出的盒数。
样例 #1
样例输入 #1
4
3 7 2 9
2 8 3 17
样例输出 #1
3
提示说明
样例 1 解释
在这 4 4 4 个月中,A、B 型牛奶的售卖情况如下表所示:
月份 | A 型牛奶累计销量 | B 型牛奶累计销量 | B 型累计销量是否超过 A 型 |
---|---|---|---|
1 1 1 | 3 3 3 | 2 2 2 | 否 |
2 2 2 | 10 10 10 | 10 10 10 | 否 |
3 3 3 | 12 12 12 | 13 13 13 | 是 |
4 4 4 | 21 21 21 | 30 30 30 | 是 |
最早经过 3 3 3 个月后,B 型牛奶的累计售出的盒数超过 A 型牛奶累计售出的盒数。
数据规模与约定
对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10 ^ 5 1≤n≤105, 1 ≤ a i , b i ≤ 1 0 9 1 \leq a_i,b_i \leq 10 ^ 9 1≤ai,bi≤109 ,保证存在至少一个 x ∈ [ 1 , n ] x \in [1, n] x∈[1,n] 使得 ∑ i = 1 x a i < ∑ i = 1 x b i \sum \limits _{i=1}^x a_i<\sum \limits _{i=1}^x b_i i=1∑xai<i=1∑xbi。
测试点编号 | n n n | a i , b i a_i,b_i ai,bi | 特殊性质 |
---|---|---|---|
1 ∼ 2 1 \sim 2 1∼2 | ≤ 10 \leq 10 ≤10 | ≤ 100 \leq 100 ≤100 | 无 |
3 ∼ 5 3 \sim 5 3∼5 | ≤ 5 × 1 0 3 \leq 5 \times 10 ^ 3 ≤5×103 | ≤ 1 0 5 \leq 10 ^ 5 ≤105 | 无 |
6 ∼ 7 6 \sim 7 6∼7 | ≤ 1 0 5 \leq 10 ^ 5 ≤105 | ≤ 1 0 9 \leq 10 ^ 9 ≤109 | 保证 a 1 < b 1 a _ 1 < b _ 1 a1<b1 |
8 ∼ 10 8 \sim 10 8∼10 | ≤ 1 0 5 \leq 10 ^ 5 ≤105 | ≤ 1 0 9 \leq 10 ^ 9 ≤109 | 无 |
代码内容
// #include <iostream>
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10;
ll a[N],b[N];
int main()
{
ll n;
cin>>n;
ll numa,numb;
numa=numb=0;
for(ll i=0;i<n;i++)
cin>>a[i];
for(ll i=0;i<n;i++)
cin>>b[i];
ll x;
for(ll i=0;i<n;i++)
{
numa+=a[i];
numb+=b[i];
if(numb>numa)
{
x=i+1;
break;
}
}
cout<<x<<endl;
return 0;
}