比赛 “Asm.Def战记之夏威夷”杯 评测结果 AAAAAAATTT
题目名称 Asm.Def的验证码 最终得分 70
用户昵称 Satoshi 运行时间 3.017 s
代码语言 C++ 内存使用 1.84 MiB
提交时间 2015-11-06 12:24:40
显示代码纯文本
#include <fstream>
#include <vector>
#define N 100010
using namespace std;
typedef long long ll;
ifstream in("asm_code.in");
ofstream out("asm_code.out");
ll a[N]={0};
ll s[N]={0};
ll ans=0,mod=ll(1e9+7);
vector<int> white;
int n;
void read()
{
	int i;
	in>>n;
	for(i=1;i<=n;i++)
	{
		in>>a[i];
		a[i]--;
		if(!a[i])white.push_back(i);
	}
	for(i=1;i<=n;i++)s[i]=s[i-1]+a[i];
}
void work()
{
	int i,j,u,v,l;
	ll inner=0,outer=0;
	l=white.size();
	//for(i=0;i<l;i++)out<<white[i]<<' ';
	//out<<endl;
	for(i=0;i<l-1;i++)
	{
		u=white[i];
		for(j=i+1;j<l;j++)
		{
			v=white[j];
			if(v==u+1)continue;
			inner=s[v-1]-s[u];
			outer=(s[u-1]-s[0])+(s[n]-s[v]);
			ans+=inner*outer;
			ans%=mod;
			//out<<u<<' '<<v<<' '<<inner<<' '<<outer<<endl;
		}
	}
	out<<ans<<endl;
}
int main()
{
	read();
	work();
	return 0;
}