记录编号 338105 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 __卡片游戏 最终得分 100
用户昵称 Gravatarrewine 是否通过 通过
代码语言 C++ 运行时间 2.609 s
提交时间 2016-11-05 07:52:55 内存使用 14.01 MiB
显示代码纯文本
#define pro __attribute__((optimize("-Os")))
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
 
using namespace std;
typedef long long lg;

namespace PROIO { 
template <class T>
  pro inline void read(T &x) {
	 register bool flag = 0;register char c;
	 while((c=getchar())>'9'||c<'0')
	   if(c == '-') flag = 1;
	 x = c-'0';
	 while((c=getchar())<='9'&&c>='0')
	  x = ((x<<1)+(x<<3))+c-'0';
	 if(flag) x = -x;  
   }
template <class T>
  pro inline void write(register T x) {
    if(x < 0) {
        putchar('-');  
        x = -x;  
    } 
	if(x >= 10)    
        write(x/10);
    putchar(x%10+'0');    
   }
}
 
using namespace PROIO;
 
 
#define MAXX 500009
#define int long long

int n,l,r;
int fa = 0,fb = 0;
int f1[MAXX],f2[MAXX],a[MAXX];
int t[MAXX];
 
lg gcd(lg a,lg b) {
    return b==0 ? a:gcd(b,a%b);
}
 
void Msort(int l,int r,int f[]) {
	if(l == r) return;
	int m = (l+r) >> 1;
	Msort(l,m,f);Msort(m+1,r,f);
	int i = l,j = m+1,top = 0;
	while(i <= m && j <= r) {
		if(f[i] <= f[j]) t[++top] = f[i++];
		else t[++top] = f[j++],fa += m-i+1;
	}
	while(i <= m) t[++top] = f[i++];
	while(j <= r) t[++top] = f[j++];
	memcpy(f+l,t+1,sizeof(int)*top);
}
 
void work() {
	read(n);read(l);read(r);
	bool ok = 1;n++;
	for (int i = 2; i <= n; i++) {
		read(a[i]);
	    f1[i] = f1[i-1]+a[i]-l;
	    f2[i] = f2[i-1]+r-a[i];
	}
    Msort(1,n,f1); 
    Msort(1,n,f2);
    if(fa == 0) {
    	puts("1");
    	return;
	}
    fb = n*(n-1)/2; 
    fa = fb - fa;
    lg k = gcd(fa,fb);
    write(fa/k);putchar('/');write(fb/k);
}
 
signed main() {
	freopen("xgame.in","r",stdin);
	freopen("xgame.out","w",stdout);
	work();
	return 0;
}