Submission #1271865

#TimeUsernameProblemLanguageResultExecution timeMemory
1271865baotoan655Relativnost (COCI15_relativnost)C++20
140 / 140
1559 ms13348 KiB
#include <bits/stdc++.h> #define file(name) if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); } using namespace std; const int MOD = 10007; const int MAX = 1e5 + 5; int c; int sTree[21][MAX << 2]; int add(int x, int y) { return x + y >= MOD ? (x + y) - MOD : x + y; } int mul(int x, int y) { return x * y % MOD; } void build(int k, int l, int r, pair<int, int> v[]) { if (l == r) { sTree[1][k] = v[l].first % MOD; sTree[0][k] = v[l].second % MOD; } else { int mid = (l + r) >> 1; build(k << 1, l, mid, v); build(k << 1 | 1, mid + 1, r, v); for (int i = 0; i <= c; ++i) { sTree[i][k] = 0; } for (int i = 0; i <= c; ++i) { for (int j = 0; j <= c; ++j) { sTree[min(i + j, c)][k] = add(sTree[min(i + j, c)][k], mul(sTree[i][k << 1], sTree[j][k << 1 | 1])); } } } } void update(int k, int l, int r, int pos, pair<int, int>& val) { if (l == r) { sTree[1][k] = val.first % MOD; sTree[0][k] = val.second % MOD; } else { int mid = (l + r) >> 1; if (pos <= mid) { update(k << 1, l, mid, pos, val); } else { update(k << 1 | 1, mid + 1, r, pos, val); } for (int i = 0; i <= c; ++i) { sTree[i][k] = 0; } for (int i = 0; i <= c; ++i) { for (int j = 0; j <= c; ++j) { sTree[min(i + j, c)][k] = add(sTree[min(i + j, c)][k], mul(sTree[i][k << 1], sTree[j][k << 1 | 1])); } } } } int main() { ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0); file("A") else file("relativnost"); int n; cin >> n >> c; pair<int, int> v[n + 1]; for (int i = 1; i <= n; ++i) { cin >> v[i].first; } for (int i = 1; i <= n; ++i) { cin >> v[i].second; } build(1, 1, n, v); int q; cin >> q; while (q--) { int indx, f, s; cin >> indx >> f >> s; pair<int, int>p = { f, s }; update(1, 1, n, indx, p); int res = sTree[c][1]; cout << res << ' '; } return 0; }

Compilation message (stderr)

relativnost.cpp: In function 'int main()':
relativnost.cpp:2:58: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    2 | #define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
      |                                                   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
relativnost.cpp:63:5: note: in expansion of macro 'file'
   63 |     file("A") else file("relativnost");
      |     ^~~~
relativnost.cpp:2:91: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    2 | #define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
      |                                                                                    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
relativnost.cpp:63:5: note: in expansion of macro 'file'
   63 |     file("A") else file("relativnost");
      |     ^~~~
relativnost.cpp:2:58: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    2 | #define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
      |                                                   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
relativnost.cpp:63:20: note: in expansion of macro 'file'
   63 |     file("A") else file("relativnost");
      |                    ^~~~
relativnost.cpp:2:91: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    2 | #define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
      |                                                                                    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
relativnost.cpp:63:20: note: in expansion of macro 'file'
   63 |     file("A") else file("relativnost");
      |                    ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...