Submission #87968

#TimeUsernameProblemLanguageResultExecution timeMemory
87968GoodVudu (COCI15_vudu)C++11
42 / 140
1072 ms66560 KiB
/* ID: blackha5 TASK: test LANG: C++ */ #include <bits/stdc++.h> #define ff first #define ss second #define Maxn 1000003 #define ll long long #define pb push_back #define Inf 1000000009 #define ppb() pop_back() #define pii pair <int , int> #define mid(x, y) (x + y) / 2 #define all(x) x.begin(),x.end() #define llInf 1000000000000000009 using namespace std; ll ans; int n, p; ll a[Maxn]; int T[Maxn * 4]; map <ll, int> mp; void upd (int x, int l, int r, int v) { if (l == r) { T[v] ++; return; } if (x <= mid (l, r)) upd (x, l, mid (l, r), v * 2); else upd (x, mid (l, r) + 1, r, v * 2 + 1); T[v] = T[v * 2] + T[v * 2 + 1]; return; } int get (int x, int y, int l, int r, int v) { if (l > y or r < x) return 0; if (l >= x and r <= y) return T[v]; return get (x, y, l, mid (l, r), v * 2) + get (x, y, mid (l, r) + 1, r, v * 2 + 1); } int main () { //freopen ("file.in", "r", stdin); //freopen ("file.out", "w", stdout); //srand ((unsigned) time ( NULL )); //int randomNumber = rand() % 10 + 1; scanf ("%d", &n); for (int i = 1; i <= n; i++) scanf ("%lld", a + i); scanf ("%d", &p); for (int i = 1; i <= n; i++) a[i] -= p; mp[0] = 1; for (int i = 1; i <= n; i++) { a[i] += a[i - 1]; mp[a[i]] = 1; } int c = 0; for (auto i: mp) mp[i.ff] = ++c; int x = mp[0]; upd (x, 1, c, 1); for (int i = 1; i <= n; i++) { x = mp[a[i]]; ans += get (1, x, 1, c, 1); upd (x, 1, c, 1); } printf ("%lld\n", ans); return 0; }

Compilation message (stderr)

vudu.cpp: In function 'int main()':
vudu.cpp:59:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf ("%d", &n);
  ~~~~~~^~~~~~~~~~
vudu.cpp:62:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf ("%lld", a + i);
   ~~~~~~^~~~~~~~~~~~~~~
vudu.cpp:64:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf ("%d", &p);
  ~~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...