Submission #93647

#TimeUsernameProblemLanguageResultExecution timeMemory
93647ajmasinRelativnost (COCI15_relativnost)C++14
112 / 140
4035 ms27156 KiB
#include <bits/stdc++.h> using namespace std; #define REP(i, a, b) for(int i = a; i < b; i++) const int maxn = 100100; const int maxc = 25; const int offset = (1<<17); const int mod = 10007; int n, c, q; int niza[maxn]; int nizb[maxn]; int add(int a, int b) { a += b; if(a >= mod) a -= mod; if(a < 0) a += mod; return a; } int mult(int a, int b) { return a * b % mod; } struct tournament { int brn[2 * offset][maxc]; void update(int cvor) { REP(i, 0, c + 1) brn[cvor][i] = 0; REP(i, 0, c + 1) { REP(j, 0, c + 1) { int suma = min(i + j, c); brn[cvor][suma] = add(brn[cvor][suma], mult(brn[cvor * 2][i], brn[cvor * 2 + 1][j])); } } //REP(i, 0, c + 1) cout << brn[i][cvor] << " "; //cout << endl; return; } }T; int main() { for(int i = 2 * offset - 1; i > 0; i--) T.brn[i][0] = 1; scanf("%d%d", &n, &c); int a, b; REP(i, 0, n) { scanf("%d", &niza[i]); niza[i] %= mod; } REP(i, 0, n) { scanf("%d", &nizb[i]); nizb[i] %= mod; } REP(i, 0, n) { T.brn[i + offset][0] = nizb[i]; T.brn[i + offset][1] = niza[i]; int up = (i + offset) / 2; while(up) { T.update(up); up /= 2; } } scanf("%d", &q); int p; REP(i, 0, q) { scanf("%d%d%d", &p, &a, &b); a %= mod; b %= mod; p--; T.brn[p + offset][0] = b; T.brn[p + offset][1] = a; p += offset; p /= 2; while(p) { T.update(p); p /= 2; } printf("%d\n", T.brn[1][c]); } return 0; }

Compilation message (stderr)

relativnost.cpp: In function 'int main()':
relativnost.cpp:52:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &c);
     ~~~~~^~~~~~~~~~~~~~~~
relativnost.cpp:56:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &niza[i]);
         ~~~~~^~~~~~~~~~~~~~~~
relativnost.cpp:61:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &nizb[i]);
         ~~~~~^~~~~~~~~~~~~~~~
relativnost.cpp:75:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &q);
     ~~~~~^~~~~~~~~~
relativnost.cpp:79:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &p, &a, &b);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...