Submission #138255

#TimeUsernameProblemLanguageResultExecution timeMemory
138255DanerZeinPaint By Numbers (IOI16_paint)C++14
0 / 100
2 ms380 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; typedef pair<int,int> ii; std::string solve_puzzle(std::string s, std::vector<int> c) { vector<ii>li; vector<int>c1=c,aux=c; string rp; int k=0; for(int i=0;i<s.size();i++){ int cb=0; if(s[i]=='_'){ if(c[k]==0){ k++; } rp+='_'; continue; } for(int j=i;j<s.size();j++){ if(s[i]=='_'){ break; } cb++; } if(abs(i-cb)>=c[k]){ if(c[k]==c1[k]){ li.push_back(ii(i,0)); } if(c[k]==0){ rp+='_'; k++; continue; } c[k]--; rp+='X'; } else{ if(c[k]==0){ k++; } rp+='_'; } } string rp1; rp1.resize(rp.size()); k=c.size()-1; for(int i=s.size()-1;i>=0;i--){ int cb=0; if(s[i]=='_'){ if(c1[k]==0){ k--; } rp1[i]='_'; continue; } for(int j=i;j<s.size();j++){ if(s[i]=='_'){ break; } cb++; } if(abs(i-cb)>=c1[k]){ if(c1[k]==aux[k]){ li[k].second=i; } if(c1[k]==0){ rp1[i]='_'; k--; continue; } c1[k]--; rp1[i]='X'; } else{ if(c1[k]==0){ k--; } rp1[i]='_'; } } // cout<<rp<<endl; // cout<<rp1<<endl; string ans; ans.resize(rp.size()); for(int i=0;i<li.size();i++){ for(int j=li[i].first;j<=li[i].second;j++){ if(rp[j]=='X' and rp[j]==rp1[j]){ ans[j]='X'; } else if(s[j]=='_'){ int cb=0; for(k=j+1;k<=li[i].second;k++){ if(s[k]=='_'){ break; } cb++; } if(cb>=aux[i]){ ans[j]='_'; } else{ for(k=j+1;k<li[i].second;k++){ if(s[k]=='_'){ ans[k]='_'; break; } ans[k]='_'; } j=k; } } else ans[j]='?'; } } for(int i=0;i<ans.size();i++){ if(ans[i]!='X' and ans[i]!='?' and ans[i]!='_'){ ans[i]='_'; } } return ans; }

Compilation message (stderr)

paint.cpp: In function 'std::__cxx11::string solve_puzzle(std::__cxx11::string, std::vector<int>)':
paint.cpp:11:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<s.size();i++){
               ~^~~~~~~~~
paint.cpp:21:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j=i;j<s.size();j++){
                 ~^~~~~~~~~
paint.cpp:58:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j=i;j<s.size();j++){
                 ~^~~~~~~~~
paint.cpp:88:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<li.size();i++){
               ~^~~~~~~~~~
paint.cpp:119:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<ans.size();i++){
               ~^~~~~~~~~~~
#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...