Submission #501803

#TimeUsernameProblemLanguageResultExecution timeMemory
501803tox1c_kidDango Maker (JOI18_dango_maker)C++17
0 / 100
1 ms300 KiB
#include <iostream> #include <iomanip> #include <fstream> #include <cstdio> #include <sstream> #include <cassert> #include <vector> #include <numeric> #include <string> #include <bitset> #include <cmath> #include <complex> #include <algorithm> #include <stack> #include <queue> #include <deque> #include <set> #include <unordered_set> #include <map> #include <unordered_map> #include <random> #include <chrono> #include <ctime> #include <ext/pb_ds/detail/standard_policies.hpp> #include <ext/pb_ds/assoc_container.hpp> /* ⠄⠄⠄⢰⣧⣼⣯⠄⣸⣠⣶⣶⣦⣾⠄⠄⠄⠄⡀⠄⢀⣿⣿⠄⠄⠄⢸⡇⠄⠄ ⠄⠄⠄⣾⣿⠿⠿⠶⠿⢿⣿⣿⣿⣿⣦⣤⣄⢀⡅⢠⣾⣛⡉⠄⠄⠄⠸⢀⣿⠄ ⠄⠄⢀⡋⣡⣴⣶⣶⡀⠄⠄⠙⢿⣿⣿⣿⣿⣿⣴⣿⣿⣿⢃⣤⣄⣀⣥⣿⣿⠄ ⠄⠄⢸⣇⠻⣿⣿⣿⣧⣀⢀⣠⡌⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⣿⣿⣿⠄ ⠄⢀⢸⣿⣷⣤⣤⣤⣬⣙⣛⢿⣿⣿⣿⣿⣿⣿⡿⣿⣿⡍⠄⠄⢀⣤⣄⠉⠋⣰ ⠄⣼⣖⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⢇⣿⣿⡷⠶⠶⢿⣿⣿⠇⢀⣤ ⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣷⣶⣥⣴⣿⡗ ⢀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄ ⢸⣿⣦⣌⣛⣻⣿⣿⣧⠙⠛⠛⡭⠅⠒⠦⠭⣭⡻⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠄ ⠘⣿⣿⣿⣿⣿⣿⣿⣿⡆⠄⠄⠄⠄⠄⠄⠄⠄⠹⠈⢋⣽⣿⣿⣿⣿⣵⣾⠃⠄ ⠄⠘⣿⣿⣿⣿⣿⣿⣿⣿⠄⣴⣿⣶⣄⠄⣴⣶⠄⢀⣾⣿⣿⣿⣿⣿⣿⠃⠄⠄ ⠄⠄⠈⠻⣿⣿⣿⣿⣿⣿⡄⢻⣿⣿⣿⠄⣿⣿⡀⣾⣿⣿⣿⣿⣛⠛⠁⠄⠄⠄ ⠄⠄⠄⠄⠈⠛⢿⣿⣿⣿⠁⠞⢿⣿⣿⡄⢿⣿⡇⣸⣿⣿⠿⠛⠁⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠉⠻⣿⣿⣾⣦⡙⠻⣷⣾⣿⠃⠿⠋⠁⠄⠄⠄⠄⠄⢀⣠⣴ ⣿⣿⣿⣶⣶⣮⣥⣒⠲⢮⣝⡿⣿⣿⡆⣿⡿⠃⠄⠄⠄⠄⠄⠄⠄⣠⣴⣿⣿⣿ */ using namespace std; using namespace __gnu_pbds; typedef long long ll; typedef long double ld; typedef double db; typedef unsigned long long ull; typedef pair<ll, ll> pll; typedef pair<int, int> pii; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; #define all(x) (x).begin(), (x).end() mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); template <typename A, typename B> string to_string(pair<A, B> p); template <typename A, typename B, typename C> string to_string(tuple<A, B, C> p); template <typename A, typename B, typename C, typename D> string to_string(tuple<A, B, C, D> p); string to_string(const string& s) { return '"' + s + '"'; } string to_string(const char* s) { return to_string((string) s); } string to_string(vector<bool> v) { bool first = true; string res = "{"; for (int i = 0; i < static_cast<int>(v.size()); i++) { if (!first) { res += ", "; } first = false; res += to_string(v[i]); } res += "}"; return res; } template <typename A> string to_string(A v) { bool first = true; string res = "{"; for (const auto &x : v) { if (!first) { res += ", "; } first = false; res += to_string(x); } res += "}"; return res; } template <typename A, typename B> string to_string(pair<A, B> p) { return "(" + to_string(p.first) + ", " + to_string(p.second) + ")"; } template <typename A, typename B, typename C> string to_string(tuple<A, B, C> p) { return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ")"; } template <typename A, typename B, typename C, typename D> string to_string(tuple<A, B, C, D> p) { return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ", " + to_string(get<3>(p)) + ")"; } void debug_out() { cout << "\n"; } template <typename Head, typename... Tail> void debug_out(Head H, Tail... T) { cout << " " << to_string(H); debug_out(T...); } #ifdef CLOWN #define dbg(...) cout << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__); #else #define dbg(...); #endif int test = 0; void fastio() { ios_base::sync_with_stdio(false); cin.tie(nullptr); } int check(char a, char b, char c) { return a == 'R' && b == 'G' && c == 'W'; } void solve() { int n, m; cin >> n >> m; vector<vector<char>> g(n + 2, vector<char>(m + 2)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) cin >> g[i][j]; } // dbg(g) vector<vector<int>> dp1(n + 2, vector<int>(m + 2)); // none vector<vector<int>> dp2(n + 2, vector<int>(m + 2)); // rows vector<vector<int>> dp3(n + 2, vector<int>(m + 2)); // column for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { dp1[i][j] = max({ dp1[i - 1][j + 1], dp3[i - 1][j + 1], dp2[i - 1][j + 1]}); if (check(g[i - 1][j], g[i][j], g[i + 1][j])) { dp3[i][j] = max( dp2[i - 1][j + 1], dp1[i - 1][j + 1]) + 1; } if (check(g[i][j - 1], g[i][j], g[i][j + 1])) { dp2[i][j] = max(dp3[i - 1][j + 1], dp1[i - 1][j + 1]) + 1; } } } for (int i = 0; i < dp1.size(); i++) { for (int j = 0; j < dp1[i].size(); j++) cout << dp1[i][j] << " "; cout << "\n"; } cout << "\n"; for (int i = 0; i < dp1.size(); i++) { for (int j = 0; j < dp1[i].size(); j++) cout << dp2[i][j] << " "; cout << "\n"; } cout << "\n"; for (int i = 0; i < dp1.size(); i++) { for (int j = 0; j < dp1[i].size(); j++) cout << dp3 [i][j] << " "; cout << "\n"; } cout << "\n"; int ans = 0; for (int i = 1; i <= n; i++) ans += max({dp1[i][1], dp2[i][1], dp3[i][1]}); for (int i = 2; i <= m; i++) ans += max({dp1[n][i], dp2[n][i], dp3[n][i]}); dbg(ans) } int32_t main() { #ifdef CLOWN freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif int t = 1; fastio(); if (test) cin >> t; while (t--) { solve(); } return 0; }

Compilation message (stderr)

dango_maker.cpp: In function 'void solve()':
dango_maker.cpp:168:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  168 |     for (int i = 0; i < dp1.size(); i++) {
      |                     ~~^~~~~~~~~~~~
dango_maker.cpp:169:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  169 |         for (int j = 0; j < dp1[i].size(); j++) cout << dp1[i][j] << " ";
      |                         ~~^~~~~~~~~~~~~~~
dango_maker.cpp:173:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  173 |     for (int i = 0; i < dp1.size(); i++) {
      |                     ~~^~~~~~~~~~~~
dango_maker.cpp:174:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  174 |         for (int j = 0; j < dp1[i].size(); j++) cout << dp2[i][j] << " ";
      |                         ~~^~~~~~~~~~~~~~~
dango_maker.cpp:178:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  178 |     for (int i = 0; i < dp1.size(); i++) {
      |                     ~~^~~~~~~~~~~~
dango_maker.cpp:179:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  179 |         for (int j = 0; j < dp1[i].size(); j++) cout << dp3 [i][j] << " ";
      |                         ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...