Submission #132460

#TimeUsernameProblemLanguageResultExecution timeMemory
132460DanerZeinPaint 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) { string rp; rp.resize(s.size()); vector<int>id; vector<int> p,b; b.push_back(0); for(int i=0;i<s.size();i++){ if(s[i]=='_'){ b.push_back(i); // cout<<i<<" "; } } //cout<<endl; // b.push_back(s.size()); int k=s.size()-1,l=s.size()-1,r=c.size()-1,bl=b.size()-2; //bl=0; vector<ii>vii; while(true){ // printf("b[bl]: %d k: %d c[r]: %d l: %d\n", b[bl],k,c[r],l); if(k<=b[bl]){ bl--; k--; } if(k<=-1 or r<=-1){ break; } if(l-b[bl]>=c[r]){ int a,d; a=k; for(int i=0;i<c[r];i++){ rp[k]='X'; k--; } d=k; vii.push_back(ii(a,d+1)); r--; if(k-b[bl]>=c[r]){ rp[k]='_'; k--; } l=k; } else{ rp[k]='_'; k--; l=k; } } for(int i=0;i<rp.size();i++){ if(rp[i]!='X' and rp[i]!='_'){ rp[i]='_'; } } string rp1; rp1.resize(s.size()); b.push_back(s.size()); k=0,l=0,r=0,bl=1; bl=1; vector<ii>vii1; while(true){ /* cout<<rp1<<endl; printf("b[bl]: %d k: %d c[r]: %d l: %d\n", b[bl],k,c[r],l);*/ if(s[k]=='_'){ rp1[k]='_'; k++; } if(k>=b[bl]){ bl++; k++; } if(k>=s.size() or r>=c.size()){ break; } if(b[bl]-l>=c[r]){ int a,d; a=k; for(int i=0;i<c[r];i++){ rp1[k]='X'; k++; } d=k-1; vii1.push_back(ii(a,d)); r++; if(b[bl]-k>=c[r]){ rp1[k]='_'; k++; } l=k; } else{ rp1[k]='_'; k++; l=k; } } for(int i=0;i<rp.size();i++){ if(rp1[i]!='X' and rp1[i]!='_'){ rp1[i]='_'; } } bool sw=0; //cout<<rp<<endl<<rp1<<endl; /* for(int i=0;i<vii.size();i++){ cout<<vii[i].first<<" "<<vii[i].second<<endl; } cout<<endl; for(int i=0;i<vii1.size();i++){ cout<<vii1[i].first<<" "<<vii1[i].second<<endl; } for(int i=0;i<b.size();i++){ cout<<b[i]<<" "; } cout<<endl;*/ int j,j1; string ans; ans.resize(s.size()); j=vii.size()-1; j1=0; int k1=0; for(int i=0;i<vii.size();i++){ for(int k=vii1[j1].first;k<=vii[j].first;k++){ if(k>b[k1+1]){ k1++; } // cout<<b[k1+1]<<" "<<c[j]<<endl; if(b[k1+1]-b[k1]>=c[j1] and k>=b[k1] and k<=b[k1+1]){ if(s[k]=='_'){ ans[k]='_'; } else{ if(rp[k]==rp1[k] and rp[k]=='X'){ ans[k]=rp[k]; } else{ ans[k]='?'; } } } } j--; j1++; } for(int i=0;i<ans.size();i++){ if(ans[i]!='X' and ans[i]!='?' and ans[i]!='_') ans[i]='_'; } // cout<<ans<<endl; return ans; }

Compilation message (stderr)

paint.cpp: In function 'std::__cxx11::string solve_puzzle(std::__cxx11::string, std::vector<int>)':
paint.cpp:12:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<s.size();i++){
                 ~^~~~~~~~~
paint.cpp:55:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<rp.size();i++){
                 ~^~~~~~~~~~
paint.cpp:77:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       if(k>=s.size() or r>=c.size()){
          ~^~~~~~~~~~
paint.cpp:77:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       if(k>=s.size() or r>=c.size()){
                         ~^~~~~~~~~~
paint.cpp:102:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<rp.size();i++){
                 ~^~~~~~~~~~
paint.cpp:127:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<vii.size();i++){
                 ~^~~~~~~~~~~
paint.cpp:151:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<ans.size();i++){
                 ~^~~~~~~~~~~
paint.cpp:107:10: warning: unused variable 'sw' [-Wunused-variable]
    bool  sw=0;
          ^~
#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...