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