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