Codeforces Round #585 (Div. 2)B. The Number of Products

题目来源:http://codeforces.com/contest/1215/problem/B

赛中被题目搞了心态,刚开始想的差不多以负数为分界点,分区间想就行了,但还是学长写的更为简洁啊。

比赛里心态还是要放平放稳,冷静不要毛躁。

分完区间之后直接判断奇数还是偶数区间就行了,也就是正数不变,直接把上一次的累加到这个数上,负数相反。

总数直接(以i为结尾有多少种情况1+2+...+i)1+2+....+n=n*(n+1)/2种情况减去即可得另一种。

(菜是原罪)

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<vector>
#include<cmath>
#include<string>
#include<stack>
#include<set>
#include<map>
using namespace std;
typedef long long ll;
int a[200100];
int main()
{
	int n,i,j;
	scanf("%d",&n);
	ll h1=0,h2=0;
	ll sum1=0,sum2=0;
	ll hh=(n+1)*n/2;
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		if(a[i]<0)
		{
			swap(h1,h2);
			h2++;
		}
		else
		h1++;
		sum1+=h1,sum2+=h2;
	}
	printf("%I64d %I64d",sum2,sum1);
	return 0;
}
发布了56 篇原创文章 · 获赞 17 · 访问量 2330

猜你喜欢

转载自blog.csdn.net/weixin_43958964/article/details/101036797