Submission #1012512

#TimeUsernameProblemLanguageResultExecution timeMemory
1012512IrateRelativnost (COCI15_relativnost)C++17
140 / 140
2791 ms23020 KiB
#include<cstdio> #include<stack> using namespace std; const int MOD = 10007; const int MAX = 1e5 + 5; int c; int sTree[21][4 * MAX]; void Build(int node, int l, int r, pair<int, int> v[]){ if(l == r){ sTree[1][node] = v[l].first % MOD; sTree[0][node] = v[l].second % MOD; } else{ int mid = (l + r) >> 1; Build(node * 2, l, mid, v); Build(node * 2 + 1, mid + 1, r, v); for(int i = 0;i <= c;++i){ sTree[i][node] = 0; } for(int i = 0;i <= c;++i){ for(int j = 0;j <= c;++j){ sTree[min(i + j, c)][node] += 1LL * sTree[i][node * 2] * sTree[j][node * 2 + 1] % MOD; sTree[min(i + j, c)][node] %= MOD; } } } } void Update(int node, int l, int r, int pos, pair<int, int>&val){ if(l == r){ sTree[1][node] = val.first % MOD; sTree[0][node] = val.second % MOD; } else{ int mid = (l + r) >> 1; if(pos <= mid){ Update(node * 2, l, mid, pos, val); } else{ Update(node * 2 + 1, mid + 1, r, pos, val); } for(int i = 0;i <= c;++i){ sTree[i][node] = 0; } for(int i = 0;i <= c;++i){ for(int j = 0;j <= c;++j){ sTree[min(i + j, c)][node] += 1LL * sTree[i][node * 2] * sTree[j][node * 2 + 1] % MOD; sTree[min(i + j, c)][node] %= MOD; } } } } int main(){ // ios_base::sync_with_stdio(0); // cin.tie(0); int n; // cin >> n >> c; scanf("%d %d", &n, &c); pair<int, int> v[n + 1]; for(int i = 1;i <= n;++i){ // cin >> v[i].first; scanf("%d", &v[i].first); } for(int i = 1;i <= n;++i){ // cin >> v[i].second; scanf("%d", &v[i].second); } Build(1, 1, n, v); int q; // cin >> q; scanf("%d", &q); while(q--){ int indx, f, s; // cin >> indx >> f >> s; scanf("%d %d %d", &indx, &f, &s); pair<int, int>p = {f, s}; Update(1, 1, n, indx, p); int res = sTree[c][1]; // cout << res << '\n'; printf("%d\n", res); } }

Compilation message (stderr)

relativnost.cpp: In function 'int main()':
relativnost.cpp:57:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |     scanf("%d %d", &n, &c);
      |     ~~~~~^~~~~~~~~~~~~~~~~
relativnost.cpp:61:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   61 |         scanf("%d", &v[i].first);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~
relativnost.cpp:65:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   65 |         scanf("%d", &v[i].second);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~
relativnost.cpp:71:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   71 |     scanf("%d", &q);
      |     ~~~~~^~~~~~~~~~
relativnost.cpp:75:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   75 |         scanf("%d %d %d", &indx, &f, &s);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...