Submission #127546

#TimeUsernameProblemLanguageResultExecution timeMemory
127546mahmoudbadawyMartian DNA (IOI16_dna)C++17
100 / 100
18 ms392 KiB
#include "dna.h"
#include <bits/stdc++.h>
#include <cstdlib>

using namespace std;

std::string analyse(int n, int t) {
	int st=0,en=n,cnt0=0;
	while(st<=en)
	{
		int mid=(st+en)/2;
		if(make_test(string(mid,'0')))
			cnt0=mid,st=mid+1;
		else
			en=mid-1;
	}
	string ans=string(cnt0,'0');
    int fail=0;
    while(ans.size()<n)
    {
    	if(make_test(ans+"1"))
    	{
    		ans+="1";
    		fail=0;
    	}
    	else
    	{
    		ans+="0";
    		fail++;
    	}
    	if(fail>cnt0) break;
    }
    st=cnt0,en=ans.size(); int mx=cnt0;
    while(st<=en)
    {
    	int mid=(st+en)/2;
    	if(make_test(ans.substr(0,mid)))
    		mx=mid,st=mid+1;
    	else
    		en=mid-1;
    }
    ans=ans.substr(0,mx);
    //cout << ans << endl;
    for(int i=ans.size();i<n;i++)
    {
    	if(make_test("0"+ans))
    		ans="0"+ans;
    	else
    		ans="1"+ans;
    }
    return ans;
}                       

Compilation message (stderr)

dna.cpp: In function 'std::__cxx11::string analyse(int, int)':
dna.cpp:19:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(ans.size()<n)
           ~~~~~~~~~~^~
grader.cpp: In function 'bool make_test(std::__cxx11::string)':
grader.cpp:14:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < p.size(); i++) {
                  ~~^~~~~~~~~~
grader.cpp:23:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 1; i <= ss.size(); i++) {
                  ~~^~~~~~~~~~~~
grader.cpp:28:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (pr[i] == p.size()) {
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...