Submission #1224722

#TimeUsernameProblemLanguageResultExecution timeMemory
1224722madamadam3Paint By Numbers (IOI16_paint)C++20
32 / 100
0 ms328 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; #define trace(x) for (auto &el : x) cout << el << " "; using str = string; using vi = vector<int>; const str type[4] = {"X", "_", ".", "?"}; inline int id(char c) { if (c == 'X') return 0; else if (c == '_') return 1; else if (c == '.') return 2; else return 3; } void output_mask(int n, int mask) { for (int bit = 0; bit < n; bit++) { cout << (mask & (1 << bit) ? "X" : "_"); } cout << "\n"; } void trace_bits(int mask, int sf = 16) { for (int i = 0; i < sf; i++) { if (mask & (1 << i)) cout << "1"; else cout << "0"; } cout << "\n"; } str solve_puzzle(str s, vi c) { vi base; for (auto &el : s) base.push_back(id(el)); int n = base.size(); int k = c.size(); vector<bool> is_black(n, false), is_white(n, false); vi min_pos(k, 0), max_pos(k, n - 1); for (int i = 1; i < k; i++) { min_pos[i] = min_pos[i-1] + c[i-1] + 1; } for (int i = k - 2; i >= 0; i--) { max_pos[i] = max_pos[i+1] - c[i+1] - 1; } for (int i = 0; i < k; i++) { int L = max_pos[i] - c[i] + 1, R = min_pos[i] + c[i] - 1; if (L > R) continue; for (int j = L; j <= R; j++) { is_black[j] = true; } } for (int i = 0; i < k - 1; i++) { for (int j = max_pos[i]+1; j < min_pos[i+1]; j++) { is_white[j] = true; } } str ans; for (int i = 0; i < n; i++) { if (is_black[i] && !(is_white[i])) ans += "X"; else if (is_white[i] && !(is_black[i])) ans += "_"; else ans += "?"; } return ans; }

Compilation message (stderr)

paint.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
paint_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...