제출 #1167800

#제출 시각아이디문제언어결과실행 시간메모리
1167800SmuggingSpunPaint By Numbers (IOI16_paint)C++20
10 / 100
218 ms420 KiB
#include<bits/stdc++.h> #include "paint.h" using namespace std; string solve_puzzle(string s, vector<int>c) { for(char& c : s){ if(c != '.'){ c = (c == 'X' ? '1' : '0'); } } int n = s.size(); if(n <= 20){ vector<int>ans(n, 0); for(int mask = (1 << n) - 1; mask > -1; mask--){ string cur = ""; vector<int>C; bool flag = true; for(int i = 0; i < n; i++){ cur += char((mask >> i & 1) + 48); if(s[i] != '.' && cur.back() != s[i]){ flag = false; break; } } if(flag){ cur += '0'; for(int i = 0, cnt = 0; i <= n; i++){ if(cur[i] == '0' && cnt > 0){ C.emplace_back(cnt); cnt = 0; } else if(cur[i] == '1'){ cnt++; } } if(C == c){ for(int i = 0; i < n; i++){ ans[i] |= 1 << (cur[i] - 48); } } } } string ret = ""; for(int i = 0; i < n; i++){ ret += (ans[i] == 1 ? '_' : (ans[i] == 2 ? 'X' : '?')); } return ret; } if(s == string(n, '.')){ string ans = ""; for(int i = 0; i < n; i++){ int p = -1, left = i - 1, right = n - left - 1; if(left >= c[0]){ for(int j = 0; j < c.size(); j++){ if(j + 1 == c.size() || left - c[j] <= c[j + 1]){ p = j; break; } } } for(int t = p + 1; t < c.size(); t++){ right -= c[t] - 1; } ans += (right < -1 ? 'X' : '?'); } return ans; } }

컴파일 시 표준 에러 (stderr) 메시지

paint.cpp: In function 'std::string solve_puzzle(std::string, std::vector<int>)':
paint.cpp:67:1: warning: control reaches end of non-void function [-Wreturn-type]
   67 | }
      | ^
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...