Submission #1245101

#TimeUsernameProblemLanguageResultExecution timeMemory
1245101simplemind_31Paint By Numbers (IOI16_paint)C++20
0 / 100
0 ms320 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; int n,suma,m,dp[105][105]; string res; vector<int> pos,revpos; vector<int> psum; string solve_puzzle(string s,vector<int> c) { n=s.size(); m=c.size(); pos.resize(m); revpos.resize(m); psum.resize(n+2); int last=0; res=s; for(int i=0;i<n;i++){ bool xd=true; for(int j=0;j<c[last];j++){ if(s[i+j]=='_'){ xd=false; break; } } if(xd){ pos[last]=i; i+=c[last]; last++; if(last==m){ break; } } } last=m-1; for(int i=n-1;i>=0;i--){ bool xd=true; for(int j=0;j<c[last];j++){ if(s[i-j]=='_'){ xd=false; break; } } if(xd){ revpos[last]=i; i-=c[last]; last--; if(last==-1){ break; } } } for(int i=0;i<m;i++){ revpos[i]-=(c[i]-1); } for(int i=0;i<m;i++){ for(int j=pos[i];j<=revpos[i];j++){ bool xd=true; for(int k=0;k<c[i];k++){ if(s[j+k]=='_'){ xd=false; break; } } if(xd){ // de pos[i] al revpos[i]+c[i]-1; psum[j]++; psum[j+c[i]]--; } } } // calcular cuantas formas hay en total // hasta pos i, con c[j]; // hacer para j=1; for(int i=c[0];i<=n;i++){ bool xd=true; dp[i][1]+=dp[i-1][1]; for(int l=0;l<c[0];l++){ if(s[i-l-1]=='_'){ xd=false; break; } } if(xd){ dp[i][1]++; } } for(int j=2;j<=m;j++){ for(int i=c[j-1]+1;i<=n;i++){ bool xd=true; dp[i][j]+=dp[i-1][j]; for(int l=0;l<c[j-1];l++){ if(s[i-l-1]=='_'){ xd=false; break; } } if(xd){ dp[i][j]+=dp[i-c[j-1]-1][j-1]; } } } /*for(int i=0;i<=n;i++){ for(int j=0;j<=m;j++){ cout << dp[i][j] << ' '; } cout << endl; }*/ int suma=0; for(int i=0;i<n;i++){ suma+=psum[i]; if(suma==dp[n][m]){ res[i]='X'; }else if(suma==0){ res[i]='_'; } } return res; }

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...