Submission #937509

#TimeUsernameProblemLanguageResultExecution timeMemory
937509panMobitel (COCI19_mobitel)C++17
130 / 130
1375 ms28408 KiB
#include <bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> //#include "bits_stdc++.h" #define x first #define y second #define pb push_back #define mp make_pair #define lb lower_bound #define ub upper_bound #define input(x) scanf("%lld", &x); #define input2(x, y) scanf("%lld%lld", &x, &y); #define input3(x, y, z) scanf("%lld%lld%lld", &x, &y, &z); #define input4(x, y, z, a) scanf("%lld%lld%lld%lld", &x, &y, &z, &a); #define print(x, y) printf("%lld%c", x, y); #define show(x) cerr << #x << " is " << x << endl; #define show2(x,y) cerr << #x << " is " << x << " " << #y << " is " << y << endl; #define show3(x,y,z) cerr << #x << " is " << x << " " << #y << " is " << y << " " << #z << " is " << z << endl; #define discretize(x) sort(x.begin(), x.end()); x.erase(unique(x.begin(), x.end()), x.end()); using namespace std; //using namespace __gnu_pbds; //#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> //#define ordered_multiset tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> typedef long long ll; typedef long double ld; typedef pair<ld, ll> pd; typedef pair<string, ll> psl; typedef pair<ll, ll> pi; typedef pair<ll, pi> pii; ll const mod = 1e9+7; int main() { ll r,s,n; input3(r,s,n); ll table[r+1][s+1], conv[n+1]; vector<ll> dis; for (ll i=1; i<=r; ++i) for (ll j=1; j<=s; ++j) input(table[i][j]); for (ll i=1; i<=n; ++i) dis.pb((n-1)/i); discretize(dis); for (ll i=0; i<dis.size(); ++i) conv[dis[i]] = i; ll prevv[305][2005]; for (ll i=0; i<=s; ++i) for (ll j=0; j<dis.size(); ++j) prevv[i][j] = 0; for (ll i=1; i<=r; ++i) { ll dp[305][2005]; for (ll i=0; i<=s; ++i) for (ll j=0; j<dis.size(); ++j) dp[i][j] = 0; for (ll j=1; j<=s; ++j) { if (i==1 && j==1) dp[j][conv[((n-1)/table[i][j])]]+=1; for (ll k=0; k<dis.size(); ++k) { dp[j][conv[dis[k]/table[i][j]]] = (dp[j][conv[dis[k]/table[i][j]]] + prevv[j][k])%mod; dp[j][conv[dis[k]/table[i][j]]] = (dp[j][conv[dis[k]/table[i][j]]] + dp[j-1][k])%mod; } } swap(prevv, dp); } print(prevv[s][conv[0]], '\n'); return 0; }

Compilation message (stderr)

mobitel.cpp: In function 'int main()':
mobitel.cpp:40:16: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |  for (ll i=0; i<dis.size(); ++i) conv[dis[i]] = i;
      |               ~^~~~~~~~~~~
mobitel.cpp:42:40: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |  for (ll i=0; i<=s; ++i) for (ll j=0; j<dis.size(); ++j) prevv[i][j] = 0;
      |                                       ~^~~~~~~~~~~
mobitel.cpp:46:41: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |   for (ll i=0; i<=s; ++i) for (ll j=0; j<dis.size(); ++j) dp[i][j] = 0;
      |                                        ~^~~~~~~~~~~
mobitel.cpp:50:18: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |    for (ll k=0; k<dis.size(); ++k)
      |                 ~^~~~~~~~~~~
mobitel.cpp:13:30: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 | #define input3(x, y, z) scanf("%lld%lld%lld", &x, &y, &z);
      |                         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
mobitel.cpp:34:2: note: in expansion of macro 'input3'
   34 |  input3(r,s,n);
      |  ^~~~~~
mobitel.cpp:11:23: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 | #define input(x) scanf("%lld", &x);
      |                  ~~~~~^~~~~~~~~~~~
mobitel.cpp:37:50: note: in expansion of macro 'input'
   37 |  for (ll i=1; i<=r; ++i) for (ll j=1; j<=s; ++j) input(table[i][j]);
      |                                                  ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...