제출 #1151074

#제출 시각아이디문제언어결과실행 시간메모리
1151074alexddPaint By Numbers (IOI16_paint)C++20
0 / 100
0 ms320 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; int n,k; vector<vector<bool>> calc_dp(string s, vector<int> cit_c) { vector<int> c; c.push_back(0); for(int x:cit_c) c.push_back(x); s = "#" + s; vector<int> pref_(n+2,0); for(int i=1;i<=n;i++) { pref_[i] = pref_[i-1]; if(s[i]=='_') pref_[i]++; } vector<vector<bool>> dp(n+2,vector<bool>(k+2,0)); dp[0][0]=1; for(int i=1;i<=n;i++) { if(dp[i-1][0] && s[i]!='X') dp[i][0]=1; if(i>=c[1] && pref_[i] - pref_[i-c[1]] == 0 && dp[i-c[1]][0]) dp[i][1]=1; for(int j=2;j<=k;j++) { if(i-c[j]-1 < 0) continue; if(dp[i-c[j]-1][j-1] && s[i-c[j]]!='X' && pref_[i] - pref_[i-c[j]] == 0) dp[i][j]=1; if(dp[i-1][j] && s[i]!='X') dp[i][j]=1; } } return dp; } string solve_puzzle(string s, vector<int> c) { n = s.size(); k = c.size(); assert(k>0); string rez = ""; for(int i=0;i<s.size();i++) { if(s[i]=='.') { bool canX=0,can_=0; s[i] = 'X'; vector<vector<bool>> auxdp = calc_dp(s,c); if(auxdp[n][k]) canX=1; s[i] = '_'; auxdp = calc_dp(s,c); if(auxdp[n][k]) can_=1; s[i] = '.'; assert(canX || can_); if(canX && can_) rez.push_back('?'); else if(canX) rez.push_back('X'); else rez.push_back('_'); } else rez.push_back(s[i]); } return rez; } /* .......... 2 3 4 */

컴파일 시 표준 에러 (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...