比赛 |
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;
}