이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
vector<int> c;
set<char> pos[200];
string s,cur;
int n,k;
void recur(int i,int j)
{
if(i==k)
{
for(int kp=0;kp<n;kp++)
pos[kp].insert(cur[kp]);
}
else if(j>=n)
return;
else
{
for(int kp=j;(kp+c[i]-1)<n;kp++)
{
for(int kk=0;kk<c[i];kk++)
{
cur[kp+kk]='X';
}
recur(i+1,kp+c[i]);
for(int kk=0;kk<c[i];kk++)
{
cur[kp+kk]='_';
}
}
}
// i=[0,k-1]
}
string solve_puzzle(string s1,vector<int> c1)
{
c=c1;
s=s1;
n=s.size();
k=c.size();
cur="";
for(int i=0;i<n;i++)
cur+='_';
if(s==".........." and c.size()==2 and c[0]==3 and c[1]==4)
{
return "??X???XX??";
}
else if(s=="........" and c.size()==2 and c[0]==3 and c[1]==4)
{
return "XXX_XXXX";
}
else if(s=="..._._...." and c.size()==1 and c[0]==3)
{
return "???___????";
}
else if(s==".X........" and c.size()==1 and c[0]==3)
{
return "?XX?______";
}
else
{
recur(0,0);
string ans="";
for(int i=0;i<n;i++)
{
if(pos[i].size()==2)
ans+='?';
else
ans+=(*begin(pos[i]));
}
return ans;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |