Advertisement
a53

Wind

a53
Mar 11th, 2020
687
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. ifstream f("wind.in");
  8. ofstream g("wind.out");
  9.  
  10. long long d,smin,smax,divx,poz,pozmax,minimm=99999999,C,n,i,k,s[200001],v[10001],x,j,dif,minim=99999999,numar,gasit;
  11. int main()
  12. {
  13. f>>C;
  14. if(C==1)
  15. {
  16. f>>n;
  17. for(i=1; i*i<=n; i++)
  18. if(n%i==0)
  19. {
  20. k++;
  21. if(i!=n/i)
  22. k++;
  23. }
  24. g<<k-1;
  25. }
  26. else
  27. {
  28. f>>n;
  29. for(i=1; i<=n; i++)
  30. {
  31. f>>x;
  32. s[i]=s[i-1]+x;
  33. }
  34. for(i=1; i*i<=n; i++)
  35. if(n%i==0)
  36. {
  37. k++;
  38. v[k]=i;
  39. if(i!=n/i and n/i!=n)
  40. {
  41. k++;
  42. v[k]=n/i;
  43. }
  44. }
  45.  
  46. for(i=1; i<=k; i++)
  47. {
  48. x=v[i];
  49. smin=99999999999;
  50. smax=-99999999999;
  51.  
  52. for(j=x; j<=n; j=j+x)
  53. {
  54. if ( s[j]-s[j-x]< smin)
  55. smin=s[j]-s[j-x];
  56. if (s[j]-s[j-x] >= smax)
  57. {
  58. smax=s[j]-s[j-x];
  59. poz=j-x+1;
  60. }
  61. }
  62. dif=smax-smin;
  63. if(dif<minimm)
  64. {
  65. minimm=dif;
  66. divx=x;
  67. pozmax=poz;
  68. }
  69. else if(dif==minimm && x<divx)
  70. {
  71. divx=x;
  72. pozmax=poz;
  73. }
  74. }
  75. g<<n/divx<<" "<<pozmax;
  76. }
  77.  
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement