Submission #138899

#TimeUsernameProblemLanguageResultExecution timeMemory
138899DanerZeinPaint By Numbers (IOI16_paint)C++14
0 / 100
5 ms632 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,j=0; while(true){ if(k==c.size()){ break; } if(j==s.size()){ break; } if(s[j]=='_'){ rp+='_'; j++; continue; } int cb=0; for(int i=j;i<s.size();i++){ if(s[i]=='_'){ break; } cb++; } if(cb>=c[k]){ for(;j<s.size();j++){ if(c[k]==aux[k]){ li.push_back(ii(j,0)); } rp+='X'; c[k]--; if(c[k]==0){ break; } } j++; if(rp.size()+1<=s.size()) rp+='_'; j+=1; k++; } else{ rp+='_'; j++; } } for(int i=rp.size();i<s.size();i++){ rp+='_'; } string rp1; k=c.size()-1; j=rp.size()-1; rp1.resize(rp.size()); while(j!=-1){ // cout<<j<<" "<<k<<endl; if(j<=-1){ break; } if(k<=-1){ break; } if(s[j]=='_'){ rp1[j]='_'; j--; continue; } int cb=0; for(int i=j;i>=0;i--){ if(s[i]=='_'){ break; } cb++; } // cout<<cb<<" c[k]: "<<c[k]<<endl; if(cb>=c1[k]){ for(;j>=0;j--){ rp1[j]='X'; if(c1[k]==aux[k]){ li[k].second=j; } c1[k]--; if(c1[k]==0){ break; } } k--; j--; rp1[j]='_'; j--; } else{ rp1[j]='_'; j--; } } for(;j>=0;j--){ rp1[j]='_'; } // cout<<rp<<endl; //cout<<rp1<<endl; string ans; /* for(int i=0;i<li.size();i++){ cout<<li[i].first<<" "<<li[i].second<<endl; }*/ ans.resize(rp.size()); for(int i=0;i<li.size();i++){ int l,r; r=li[i].first+aux[i]; l=li[i].second-aux[i]; for(k=l;k<=r;k++){ if(rp[k]=='X' and rp1[k]=='X'){ ans[k]='X'; } } for(k=li[i].first;k<=li[i].second;k++){ if(s[k]=='_'){ ans[k]='_'; } if(ans[k]!='_' and ans[k]!='X'){ ans[k]='?'; } } } // cout<<ans<<endl; 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:12:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(k==c.size()){
        ~^~~~~~~~~~
paint.cpp:15:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(j==s.size()){
        ~^~~~~~~~~~
paint.cpp:24:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=j;i<s.size();i++){
                 ~^~~~~~~~~
paint.cpp:31:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(;j<s.size();j++){
            ~^~~~~~~~~
paint.cpp:52:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=rp.size();i<s.size();i++){
                       ~^~~~~~~~~
paint.cpp:112:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<li.size();i++){
               ~^~~~~~~~~~
paint.cpp:132: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...