Submission #774185

#TimeUsernameProblemLanguageResultExecution timeMemory
774185shoryu386Mobitel (COCI19_mobitel)C++17
52 / 130
4498 ms65536 KiB
#include <bits/stdc++.h> using namespace std; #define MAX 307 #define MOD 1000000007 int r, c, n; map<int, int> smolbrain[MAX][MAX]; int arr[MAX][MAX]; inline int submod(int reeee){ if (reeee >= MOD) return reeee-MOD; else return reeee; } main(){ cin >> r >> c >> n; for (int x = 0; x < r; x++){ for (int y = 0; y < c; y++) cin >> arr[x][y];} smolbrain[0][0][arr[0][0]] = 1; int cringe[MAX][MAX]; for (int x = 0; x < r; x++) cringe[x][0] = 1; for (int x = 0; x < c; x++) cringe[0][x] = 1; for (int y = 1; y < r; y++){ for (int x = 1; x < c; x++){ cringe[y][x] = submod(cringe[y-1][x] + cringe[y][x-1]); } } for (int y = 0; y < r; y++){ for (int x = 0; x < c; x++){ if (y < r-1){ for (auto i : smolbrain[y][x]){ if ((long long)i.first * (long long)arr[y+1][x] < n) smolbrain[y+1][x][ i.first * arr[y+1][x] ] = submod(smolbrain[y+1][x][ i.first * arr[y+1][x] ] + i.second); } } if (x < c-1){ for (auto i : smolbrain[y][x]){ if ((long long)i.first * (long long)arr[y][x+1] < n) smolbrain[y][x+1][ i.first * arr[y][x+1] ] = submod(smolbrain[y][x+1][ i.first * arr[y][x+1] ] + i.second); } } if (y != r-1 || x != c-1) smolbrain[y][x].clear(); } } /* for (int y = 0; y < r; y++){ for (int x = 0; x < c; x++){ cout << "DEBUG FOR " << y << ' ' << x << '\n'; for (auto i : smolbrain[y][x]){ cout << i.first << ' ' << i.second << '\n'; } } } */ int presum = 0; for (auto i : smolbrain[r-1][c-1]){ presum = submod(presum + i.second); } cout << (cringe[r-1][c-1] - presum + MOD)%MOD; }

Compilation message (stderr)

mobitel.cpp:16:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   16 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...