제출 #1312610

#제출 시각아이디문제언어결과실행 시간메모리
1312610settopPaint By Numbers (IOI16_paint)C++20
100 / 100
341 ms348028 KiB
#include "paint.h" #include<bits/stdc++.h> using namespace std; #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ll long long #define ordered_set tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> #define fall(i,a,b) for(int i=a;i<=b;i++) #define rfall(i,a,b) for(int i=a;i>=b;i--) #define pb push_back #define sz(x) (int)x.size() std::string solve_puzzle(std::string s, std::vector<int> c) { int n=sz(s),k=sz(c); vector<vector<int>> dp(n+1,vector<int>(k+1)),dp2(n+1,vector<int>(k+1)),z(n+1,vector<int>(k+1)),z2(n+1,vector<int>(k+1)); vector<int> pref(n+1),cank(n+2),canp(n+2); pref[0]=0; fall(i,1,n){ pref[i]=pref[i-1]; if(s[i-1]=='_') pref[i]=i; } dp2[0][0]=1; fall(i,1,n){ //índice do cara e o número de blocos "fechados" que temos até o momento fall(j,0,k){ dp2[i][j]=dp2[i-1][j]; if(j!=0) dp2[i][j]|=dp[i-1][j-1]; if(s[i-1]=='X') dp2[i][j]=0; if(j!=k && pref[i]<=i-c[j]) dp[i][j]=dp2[i-c[j]][j]; } } z[n][k-1]=dp[n][k-1]; z2[n][k]=dp2[n][k]; rfall(i,n,1){ fall(j,0,k){ if(dp[i][j] && z[i][j]==1){ cank[i-c[j]+1]++; cank[i+1]--; z2[i-c[j]][j]=1; } if(dp2[i][j] && z2[i][j]){ canp[i]=1; z2[i-1][j]=1; if(j) z[i-1][j-1]=1; } } } string ans=""; fall(i,1,n){ cank[i]+=cank[i-1]; if(cank[i] && canp[i]) ans+="?"; else if(cank[i]) ans+="X"; else ans+="_"; } return ans; }

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