Submission #131817

#TimeUsernameProblemLanguageResultExecution timeMemory
131817DanerZeinPaint By Numbers (IOI16_paint)C++14
0 / 100
3 ms504 KiB
#include "paint.h"
#include <bits/stdc++.h>
using namespace std;

std::string solve_puzzle(std::string s, std::vector<int> c) {
    string rp;
    rp.resize(s.size());
    vector<int>id;
    vector<int> b;
    for(int i=0;i<s.size();i++){
      if(s[i]=='_'){
	b.push_back(i);
      }
    }
    b.push_back(s.size());
    int k=0,l=0,r=0,bl=0;
    while(true){
      printf("k: %d l: %d r: %d bl: %d b[bl]: %d\n",k,l,r,bl,b[bl]);
      if(k>=s.size()-1){
	break;
      }
      /*if(rp.size()==s.size()){
	break;
	}*/
      if(c[r]<=b[bl]-l){
	for(int i=0;i<c[r];i++){
	  rp[k]='X';
          k++;
	}
        if(k<b[bl]){
	  l=k;
	  rp[k]='_';
        }
	else{
          l=k;
	  bl++;
	}
	r++;
	
     }
     else{
       for(int i=0;i<b[bl];i++){
	 rp[k]='_';
         k++;
       }
       l=k;
       bl++;
     }
    }
    cout<<rp<<endl;
    bool sw=0;
    // b.clear();
    vector<int>lb,rb;
    for(int i=0;i<rp.size();i++){
      if(rp[i]=='_' and rp[i+1]=='X'){
	sw=0;
       rb.push_back(i);
      }
      if(rp[i]=='X' and rp[i+1]=='_'){
	lb.push_back(i);
      }
    }
    cout<<rb.size()<<" "<<lb.size()<<endl;
    if(rp[rp.size()-1]!='_'){
      rb.push_back(rp.size());
      lb.push_back(rp.size());
    }
    string ans;
    ans.resize(rp.size());
    int j=0;
    int t=rb[0]-lb[0];
    for(int i=0;i<rp.size();i++){
      cout<<ans<<endl;
      cout<<"t: "<<t<<endl;
      cout<<"rb[j]: "<<rb[j]<<" lb[j]: "<<lb[j]<<endl;
      if(s[i]=='_'){
	ans[i]='_';
      }
      if(rp[i]=='X'){
	if(rp[i+t]=='X' and rb[j]>=i+t){
	  ans[i+t]='X';
	}
	else{
	  if(rb[j]>=i+t){
	    for(int j=i;j<i+t;j++){
	      ans[j]='?';
	    }
	  }
	}
	if(ans[i]!='X')
	ans[i]='?';
      }
      if(i>=rb[j]){
	j++;
	t=rb[j]-lb[j];
      }
    }
    return ans;
}

Compilation message (stderr)

paint.cpp: In function 'std::__cxx11::string solve_puzzle(std::__cxx11::string, std::vector<int>)':
paint.cpp:10:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<s.size();i++){
                 ~^~~~~~~~~
paint.cpp:19:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       if(k>=s.size()-1){
          ~^~~~~~~~~~~~
paint.cpp:54:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<rp.size();i++){
                 ~^~~~~~~~~~
paint.cpp:72:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<rp.size();i++){
                 ~^~~~~~~~~~
paint.cpp:51:10: warning: variable 'sw' set but not used [-Wunused-but-set-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...