记录编号 45452 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺十二]圆圈舞蹈 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.182 s
提交时间 2012-10-24 07:35:19 内存使用 3.52 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cmath>
  5. using namespace std;
  6.  
  7. long long zc,maxdis,maxpos=2,temp,temp2,s[100010];
  8.  
  9. int main(void)
  10. {
  11. freopen("circlea.in","r",stdin);
  12. freopen("circlea.out","w",stdout);
  13. int i,n;
  14. cin>>n;
  15. for (i=1;i<=n;i++)
  16. cin>>s[i];
  17. for (i=1;i<=n;i++)
  18. s[i]=s[i-1]+s[i];
  19. zc=s[n];
  20. s[0]=s[n];
  21. s[n+1]=s[1];
  22. for (i=1;i<=n;i++)
  23. {
  24. temp=abs(s[maxpos]-s[i]);
  25. temp2=zc-temp;
  26. while (temp2>temp)
  27. {
  28. maxpos++;
  29. if (maxpos>n)
  30. maxpos=1;
  31. if (maxpos==i)
  32. {
  33. temp2=0;
  34. break;
  35. }
  36. temp=abs(s[maxpos]-s[i]);
  37. temp2=zc-temp;
  38. }
  39. temp=abs(s[maxpos-1]-s[i]);
  40. if (temp>temp2)
  41. {
  42. if (temp>maxdis)
  43. maxdis=temp;
  44. maxpos--;
  45. if (maxpos<1)
  46. maxpos=n;
  47. }
  48. else
  49. {
  50. if (temp2>maxdis)
  51. maxdis=temp2;
  52. // maxpos=maxpos;
  53. }
  54. }
  55. cout<<maxdis<<endl;
  56. return(0);
  57. }