Submission #138406

#TimeUsernameProblemLanguageResultExecution timeMemory
138406DanerZeinPaint By Numbers (IOI16_paint)C++14
0 / 100
2 ms376 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()-1){ break; } int cb=0; for(int i=j;i<s.size();i++){ if(s[i]=='_'){ break; } cb=i; } if(abs(j-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; } } if(aux[k]==1){ 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; reverse(s.begin(),s.end()); k=c.size()-1; j=0; int o=rp.size()-1; while(true){ if(k==-1){ break; } if(j==s.size()-1){ break; } int cb=j; for(int i=j;i<s.size();i++){ if(s[i]=='_'){ break; } cb=i; } if(abs(j-cb)>=c1[k]){ for(;j<s.size();j++){ rp1+='X'; if(c1[k]==aux[k]){ li[k].second=o; } c1[k]--; if(c1[k]==0){ break; } o--; } if(aux[k]==1){ j++; o--; } if(rp1.size()+1<=s.size()) rp1+='_'; j+=1; o--; k--; } else{ rp1+='_'; j++; o--; } } for(int i=rp1.size();i<s.size();i++){ rp1+='_'; } // cout<<rp1<<endl; reverse(s.begin(),s.end()); reverse(rp1.begin(),rp1.end()); //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++){ for(int j=li[i].first;j<=li[i].second;j++){ if(rp[j]=='X' and rp[j]==rp1[j]){ ans[j]='X'; aux[i]--; } 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{ aux[i]--; 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: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()-1){
        ~^~~~~~~~~~~~
paint.cpp:19:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=j;i<s.size();i++){
                 ~^~~~~~~~~
paint.cpp:26:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(;j<s.size();j++){
            ~^~~~~~~~~
paint.cpp:49:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=rp.size();i<s.size();i++){
                       ~^~~~~~~~~
paint.cpp:61:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(j==s.size()-1){
        ~^~~~~~~~~~~~
paint.cpp:65:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=j;i<s.size();i++){
                 ~^~~~~~~~~
paint.cpp:72:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(;j<s.size();j++){
            ~^~~~~~~~~
paint.cpp:99:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=rp1.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:146: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...