比赛 noip 评测结果 AAAAAAATTTTTTTTTTTTT
题目名称 __卡片游戏 最终得分 35
用户昵称 891922758 运行时间 27.731 s
代码语言 C++ 内存使用 38.44 MiB
提交时间 2016-11-04 21:58:40
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n,l,r;
const int maxn=5000050;
int a[maxn]={0};
int ans=0;
int sum[maxn]={0};
int gcd(int x,int y)
{ return y==0?x:(gcd(y,x%y));}
int main()
{
	freopen("xgame.in","r",stdin);
	freopen("xgame.out","w",stdout);
	scanf("%d%d%d",&n,&l,&r);
	for(int i=1;i<=n;i++)
	  {
	    scanf("%d",&a[i]);
	    if(a[i]>=l&&a[i]<=r)
	      ans++;
	  }
    sum[1]=a[1];
    for(int i=2;i<=n;i++)
      sum[i]=sum[i-1]+a[i];
    for(int i=1;i<=n-1;i++)
      {
      	int minm=(i+1)*l;
      	int maxm=(i+1)*r;
      	for(int j=1;j<=n-i;j++)
      	  if(sum[j+i]-sum[j-1]>=minm&&sum[j+i]-sum[j-1]<=maxm)
      	   ans++;
      }
	if(ans==0) 
	{
		printf("0\n");
		return 0;
	}
	int u;
    if(n%2==0)
      u=n/2*(n+1);
    else 
      u=(n+1)/2*n;
    if(u==ans)
    {
    	printf("1\n");
    	return 0;
    }
    int o=gcd(ans,u);
    ans=ans/o;
    u=u/o;
    printf("%d/%d\n",ans,u);
    return 0;
}