比赛 “Asm.Def战记之夏威夷”杯 评测结果 AAAAAAATTT
题目名称 Asm.Def的验证码 最终得分 70
用户昵称 Satoshi 运行时间 3.017 s
代码语言 C++ 内存使用 1.84 MiB
提交时间 2015-11-06 12:24:40
显示代码纯文本
  1. #include <fstream>
  2. #include <vector>
  3. #define N 100010
  4. using namespace std;
  5. typedef long long ll;
  6. ifstream in("asm_code.in");
  7. ofstream out("asm_code.out");
  8. ll a[N]={0};
  9. ll s[N]={0};
  10. ll ans=0,mod=ll(1e9+7);
  11. vector<int> white;
  12. int n;
  13. void read()
  14. {
  15. int i;
  16. in>>n;
  17. for(i=1;i<=n;i++)
  18. {
  19. in>>a[i];
  20. a[i]--;
  21. if(!a[i])white.push_back(i);
  22. }
  23. for(i=1;i<=n;i++)s[i]=s[i-1]+a[i];
  24. }
  25. void work()
  26. {
  27. int i,j,u,v,l;
  28. ll inner=0,outer=0;
  29. l=white.size();
  30. //for(i=0;i<l;i++)out<<white[i]<<' ';
  31. //out<<endl;
  32. for(i=0;i<l-1;i++)
  33. {
  34. u=white[i];
  35. for(j=i+1;j<l;j++)
  36. {
  37. v=white[j];
  38. if(v==u+1)continue;
  39. inner=s[v-1]-s[u];
  40. outer=(s[u-1]-s[0])+(s[n]-s[v]);
  41. ans+=inner*outer;
  42. ans%=mod;
  43. //out<<u<<' '<<v<<' '<<inner<<' '<<outer<<endl;
  44. }
  45. }
  46. out<<ans<<endl;
  47. }
  48. int main()
  49. {
  50. read();
  51. work();
  52. return 0;
  53. }