QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#535096#9229. Juliet Unifies OnesSocialPandaWA 0ms3608kbC++202.3kb2024-08-27 20:00:422024-08-27 20:00:42

Judging History

This is the latest submission verdict.

  • [2024-08-27 20:00:42]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3608kb
  • [2024-08-27 20:00:42]
  • Submitted

answer

#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>
//#define int long long
//#define LL long long
#define double long double
//#define lf Lf
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define endl "\n"
#define PII pair<int,int>
#define Gheap priority_queue<int,vector<int>,greater<int>>
#define Lheap priority_queue<int>
#define MAXN 0x3f3f3f3f
#define MINN -0x3f3f3f3f
using namespace std;
//const int N=1e6+100,M=2*N;
//int e[N],w[M],h[M],ne[M],idx;

int qz0[100],qz1[100];
int hz0[100],hz1[100];

void solve()
{
	int ans=MAXN;
    string s;cin>>s;

    int pk=-1;
    for(int i=0;i<s.size();i++)
    {
    	if(s[i]=='1') break;
    	pk=i;
    }
    for(int i=0;i<=pk;i++) {s.erase(s.begin());}
    pk=s.size();
    for(int i=s.size()-1;i>=0;i--)
    {
    	if(s[i]=='1') break;
    	pk=i;
    }
    for(int i=s.size()-1;i>=pk;i--) s.erase(s.end()-1);

    for(int i=0;i<s.size();i++)
    {
        qz0[i]=qz0[i-1];
        qz1[i]=qz1[i-1];
        if(s[i]=='0') qz0[i]++;
        else qz1[i]++;
    }
    for(int i=s.size()-1;i>=0;i--)
    {
        hz0[i]=hz0[i+1];
        hz1[i]=hz1[i+1];
        if(s[i]=='0') hz0[i]++;
        else hz1[i]++;
    }

    vector<PII> v;

    int head=0,tail=0;
    for(int i=0;i<s.size();i++)
    {
        if(i==s.size()-1 or (s[i]=='1' and s[i+1]=='0'))
        {
            tail = i;
            //cout<<head<<' '<<tail<<endl;
            v.pb({head,tail});
        }
        if(s[i]=='0' and s[i+1]=='1')
        {
            head=i+1;
        }
    }

    for(int i=0;i<v.size();i++)
    {
        for(int j=i;j<v.size();j++)
        {
            int ll = v[i].fi;
            int rr = v[j].se;

            int zuo0 = qz0[ll-1];
            int zuo1 = qz1[ll-1];
            int you0 = hz0[rr+1];
            int you1 = hz1[rr+1];

            int mid = qz0[rr]-qz0[ll-1];
            int num = mid+min(zuo0,zuo1)+min(you0,you1);
            ans=min(ans,num);
        }
    }

    cout<<ans<<endl;

}
/*

11011001

1111000111000111010101

*/
int main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int tt=1;
    //cin >> tt;
    while(tt--) solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3536kb

input:

00011011001

output:

2

result:

ok 1 number(s): "2"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

11101111111111111101001011110111111110011101010110

output:

11

result:

ok 1 number(s): "11"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

00000000100000000000100000010001000

output:

3

result:

ok 1 number(s): "3"

Test #4:

score: -100
Wrong Answer
time: 0ms
memory: 3592kb

input:

00000000000000000000000000000000000000000000000000

output:

1061109567

result:

wrong answer 1st numbers differ - expected: '0', found: '1061109567'