乘积数量(冬季每日一题 14)
admin
2024-02-08 20:52:40

给定一个长度为 nnn 且不包含 000 的整数序列 a1,a2,…,ana_1,a_2,…,a_na1​,a2​,…,an​。

请你计算以下两值:

  1. 使得 al×al+1×…×ara_l×a_{l+1}×…×a_ral​×al+1​×…×ar​ 为负的索引对 (l,r)(l≤r)(l,r)(l≤r)(l,r)(l≤r) 的数量。
  2. 使得 al×al+1×…×ara_l×a_{l+1}×…×a_ral​×al+1​×…×ar​ 为正的索引对 (l,r)(l≤r)(l,r)(l≤r)(l,r)(l≤r) 的数量。

输入格式
第一行一个整数 nnn。

第二行包含 nnn 个整数 a1,…,ana_1,…,a_na1​,…,an​。

输出格式
共一行,输出单个空格隔开的两个整数,分别表示负的索引对数和正的索引对数。

数据范围
1≤n≤2×105,1≤n≤2×10^5,1≤n≤2×105,
−109≤ai≤109,ai≠0。−10^9≤ai≤10^9,ai≠0。−109≤ai≤109,ai​=0。

输入样例1:

5
5 -3 3 -1 1

输出样例1:

8 7

输入样例2:

10
4 2 -4 3 1 2 -4 3 2 3

输出样例2:

28 27

输入样例3:

5
-1 -2 -3 -4 -5

输出样例3:

9 6

#includeusing namespace std;typedef long long LL;int main(){int n;scanf("%d", &n);LL rp = 0, rn = 0;int sp = 1, sn = 0, s = 1;while(n--){int a;scanf("%d", &a);if(a < 0) s *= -1;if(s > 0) rp += sp, rn += sn, sp++;else rp += sn, rn += sp, sn++;}printf("%lld %lld\n", rn, rp);return 0;
}

相关内容

热门资讯

一文解读|银监法迎20年来最大... 21世纪经济报道 记者郭聪聪日前,十四届全国人大常委会第十九次会议对《银行业监督管理法(修订草案)》...
调整!长春省直住房公积金最新通... 12月26日,长春省直住房公积金管理中心微信发布关于做好2026年度省直住房公积金缴存基数调整工作的...
白光昭:发展“家族事务所”集群... 由三亚市人民政府主办,《财经》杂志、财经网、《财经智库》、三亚中央商务区管理局、三亚经济研究院承办的...
日本东京多摩动物公园一头狼逃脱... 据央视新闻消息,总台记者当地时间28日获悉,位于日本东京日野市的都立多摩动物公园发生一起狼逃脱事件。...
廿载风华映江淮 金融初心铸辉煌 2025年12月28日,徽商银行迎来成立二十周年的重要日子。二十年风雨兼程,二十年春华秋实。自成立以...