제출 #1136672

#제출 시각아이디문제언어결과실행 시간메모리
1136672raspyPaint By Numbers (IOI16_paint)C++20
100 / 100
249 ms167200 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; int dpp[200005][105]; int dps[200005][105]; int kum[200005]; int sums[200005]; string solve_puzzle(string s, vector<int> c) { int n = s.size(), k=c.size(); for (int i = 1; i <= n; i++) kum[i]=kum[i-1]+(s[i-1]=='_'); dpp[0][0] = 1; for (int i = 1; i <= n; i++) { for (int j = 0; j <= k; j++) { if (s[i-1] != 'X') dpp[i][j] |= dpp[i-1][j]; if (j >= 1 && c[j-1] <= i && kum[i]-kum[max(0, i-c[j-1])] == 0 && (i == c[j-1] || s[i-c[j-1]-1] != 'X')) dpp[i][j] |= dpp[max(0, i-c[j-1]-1)][j-1]; } } dps[n+1][k+1] = 1; for (int i = n; i >= 1; i--) { for (int j = k+1; j >= 1; j--) { // if (i == 3) // cout << "j: " << j << ": " << dps[i+1][j] << "\n"; if (s[i-1] != 'X') dps[i][j] |= dps[i+1][j]; if (j <= k && c[j-1]+i <= n+1 && kum[i+c[j-1]-1]-kum[i-1] == 0 && (n-i+1 == c[j-1] || s[i+c[j-1]-1] != 'X')) { // if (i==7) // cout << j << ":" << " " << i+c[j-1]+1<< " test\n"; dps[i][j] |= dps[min(n+1, i+c[j-1]+1)][j+1]; } } } string rez; int cx = 0; for (int i = 1; i <= n; i++) { cx+=sums[i]; if (s[i-1] != '.') { rez += s[i-1]; if (s[i-1] == 'X') { for (int j = 1; j <= k; j++) { if (i+c[j-1]-1 <= n && dpp[max(0, i-2)][j-1] && dps[min(n+1, i+c[j-1]+1)][j+1] && kum[min(n, i+c[j-1]-1)]-kum[i-1]==0 && (i == 1 || s[max(0, i-2)]!='X') && (i == n || s[min(n, i+c[j-1]-1)] != 'X')) { cx++; sums[i+c[j-1]]--; } } } continue; } int stanje = 0; for (int j = 0; j <= k; j++) { if (dpp[i-1][j] && dps[i+1][j+1]) stanje|=1; } for (int j = 1; j <= k; j++) { if (i+c[j-1]-1 <= n && dpp[max(0, i-2)][j-1] && dps[min(n+1, i+c[j-1]+1)][j+1] && kum[min(n, i+c[j-1]-1)]-kum[i-1]==0 && s[max(0, i-2)]!='X' && s[min(n, i+c[j-1]-1)] != 'X') { cx++; sums[i+c[j-1]]--; } } if (cx > 0) stanje|=2; if (stanje==3) rez+= "?"; else if (stanje==2)rez+= "X"; else if (stanje==1) rez+= "_"; else rez+="t"; } return rez; }

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