Submission #114780

#TimeUsernameProblemLanguageResultExecution timeMemory
114780amiratouPaint By Numbers (IOI16_paint)C++14
32 / 100
3 ms512 KiB
#include "paint.h"

#include <bits/stdc++.h>
using namespace std;

bool check_X(string s,vector<int> c,int idx){
	for (int comp = 0; comp < c.size(); ++comp){
		int last=0;
		bool found=1;
		for (int i = 0; i < c.size(); ++i)
		{
			if(last>=(s.size())){found=0;break;}
			if(i==comp){
				if((idx-last)>=c[i])last=idx+2;
				else last=c[i]+last+1;
				continue;
			}
			if(last<=idx&&idx<=(last+c[i])){found=0;break;}
			if((s.size()-last)<c[i]){found=0;break;}
			last=last+c[i]+1;
		}
		if(found)return 1;
	}
	return 0;
}
bool check_W(string s,vector<int> c,int idx){
	int last=0;
	bool found=1;
	for (int i = 0; i < c.size(); ++i)
	{
		//cout<<last<<"\n";
		if(last>=(s.size())){found=0;break;}
		if(last<=idx){
			if((idx-last)<c[i])last=idx+1,i--;
			else last=last+c[i]+1;
			continue;
		}
		if((s.size()-last)<c[i]){found=0;break;}
		last=last+c[i]+1;
	}
	/*cout<<"found:"<<found<<"\n";
	cout<<"idx:"<<idx<<"--------------------\n";*/
	return found;
}
std::string solve_puzzle(std::string s, std::vector<int> c) {
	string ph="";
	for (int i = 0; i < s.size(); ++i)
	{
		bool c1=check_W(s,c,i),c2=check_X(s,c,i);
		if(c1&&c2)ph+="?";
		else if(c1)ph+="_";
		else if(c2)ph+="X";
	}
    return ph;
}

Compilation message (stderr)

paint.cpp: In function 'bool check_X(std::__cxx11::string, std::vector<int>, int)':
paint.cpp:7:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int comp = 0; comp < c.size(); ++comp){
                     ~~~~~^~~~~~~~~~
paint.cpp:10:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < c.size(); ++i)
                   ~~^~~~~~~~~~
paint.cpp:12:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if(last>=(s.size())){found=0;break;}
       ~~~~^~~~~~~~~~~~
paint.cpp:19:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if((s.size()-last)<c[i]){found=0;break;}
paint.cpp: In function 'bool check_W(std::__cxx11::string, std::vector<int>, int)':
paint.cpp:29:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < c.size(); ++i)
                  ~~^~~~~~~~~~
paint.cpp:32:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(last>=(s.size())){found=0;break;}
      ~~~~^~~~~~~~~~~~
paint.cpp:38:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if((s.size()-last)<c[i]){found=0;break;}
paint.cpp: In function 'std::__cxx11::string solve_puzzle(std::__cxx11::string, std::vector<int>)':
paint.cpp:47:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < s.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...