Submission #924097

#TimeUsernameProblemLanguageResultExecution timeMemory
924097TINVudu (COCI15_vudu)C++17
0 / 140
42 ms65536 KiB
#include <bits/stdc++.h> using namespace std; #define FNAME "test" #define sz(v) (int) (v).size() #define all(v) (v).begin(), (v).end() typedef long long ll; const int N = 1e6 + 5; int n; ll a[N]; ll P; ll sum; vector<ll> p; ll ans = 0; vector<ll> ST[4 * N]; void Task() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cout << fixed << setprecision(9); if (fopen(FNAME".inp","r")) { freopen(FNAME".inp","r",stdin); freopen(FNAME".out","w",stdout); } } vector<ll> Merge(vector<ll> a, vector<ll> b) { int n = a.size(), m = b.size(); vector<ll> c; int i = 0, j = 0; while (i < n && j < m) { if (a[i] <= b[j]) c.push_back(a[i++]); else c.push_back(b[j++]); } while (i < n) c.push_back(a[i++]); while (j < m) c.push_back(b[j++]); return c; } void build(int id, int l, int r) { if (l == r) { ST[id].push_back(p[l]); return; } int m = (l + r) / 2; build(id * 2, l, m); build(id * 2 + 1, m + 1, r); ST[id] = Merge(ST[id * 2], ST[id * 2 + 1]); } ll query(int id, int l, int r, int u, int v, ll k) { if (v < l || r < u) return 0LL; if (u <= l && r <= v) { int pos = lower_bound(all(ST[id]), k + 1) - ST[id].begin(); return pos; } int m = (l + r) / 2; return query(id * 2, l, m, u, v, k) + query(id * 2 + 1, m + 1, r, u, v, k); } void Solve() { //Your Code cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; cin >> P; sum = 0; p.push_back(sum); for (int i = 1; i <= n; i++) { sum += a[i] - P; p.push_back(sum); } build(1, 0, n); for (int i = 1; i <= n; i++) ans += query(1, 0, n, 0, i - 1, p[i]); cout << ans << '\n'; } int main() { Task(); Solve(); cerr << "\nTime run: " << 1000*clock()/CLOCKS_PER_SEC << "ms"; return 37^37; }

Compilation message (stderr)

vudu.cpp: In function 'void Task()':
vudu.cpp:27:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |   freopen(FNAME".inp","r",stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
vudu.cpp:28:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |   freopen(FNAME".out","w",stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...