Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define DEBUG if(1)
  6. #define MAXN 50500
  7. #define MAX 500
  8. #define MAXL 20
  9. #define MIN -2000000
  10. #define INF (1 << 30)
  11. #define MOD 1000000007
  12. #define s(n) scanf("%d", &n)
  13. #define ss(a,b) scanf("%d %d",&a,&b)
  14. #define pb push_back
  15. #define mp make_pair
  16. #define sz(a) int(a.size())
  17. // #define lli long long int
  18. #define lli unsigned long long int
  19. #define lb long double
  20. #define rep(i,a,n) for (int i=a;i<n;i++)
  21. #define ler(a,n,vec) for(int i=0;i<n;i++)s(a), vec.pb(a)
  22. typedef vector<int> vi;
  23. typedef vector<vi> vvi;
  24. typedef pair<int,int> ii;
  25. #define F first
  26. #define S second
  27. //ios_base::sync_with_stdio(false);
  28. int dx[] = {0, 0, 1, -1};
  29. int dy[] = {1, -1, 0, 0};
  30. int ddx[] = {1, 0};
  31. int ddy[] = {1, 1};
  32.  
  33.  
  34. int main(){
  35.  
  36. int n;
  37. while(s(n)!=EOF){
  38. vi vec;
  39. lli sum = 0;
  40. lli s[100000];
  41. for(int i=0;i<n;i++){
  42. int a;
  43. cin >> a;
  44. sum += a;
  45.  
  46. if(a!=0)
  47. vec.pb(a);
  48. }
  49. if(sum%3!=0){
  50. cout << 0 << endl;
  51. continue;
  52. }
  53.  
  54. s[0] = vec[0];
  55. for(int i=1;i<n;i++) s[i] = s[i-1] + vec[i];
  56.  
  57. lli aux = sum/3, ans = 0;
  58.  
  59. int a = 0,b = 1;
  60.  
  61. while(a < n){
  62. int aa = s[b] - s[a];
  63. if(aa < aux) b++;
  64. else if(aa > aux) a++;
  65. else{
  66. if(binary_search(s+b, s+n, s[b] + aux)) ans++, a++;
  67. else a++;
  68. }
  69. if(a == b) b++;
  70. if(b == sz(vec)) break;
  71. }
  72.  
  73. cout << ans << endl;
  74. }
  75.  
  76. return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement