QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#728018 | #5983. Pretty Good Proportion | pzjQWQ | 27 ✓ | 2239ms | 39048kb | C++14 | 1.1kb | 2024-11-09 14:23:31 | 2024-11-09 14:23:34 |
Judging History
answer
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N=5e5+5;
int T,n,tot,tag,a[N],sum[N],l,r;
double p;
struct node{
double a;
int b;
bool operator <(const node &o) const{ return a<o.a; }
};
set<node> s;
void update(int L,int R){
if(l==-1) l=L,r=R;
else if(fabs((sum[r]-sum[l-1])*1.0/(r-l+1)-p)>fabs((sum[R]-sum[L-1])*1.0/(R-L+1)-p)||(fabs(fabs((sum[r]-sum[l-1])*1.0/(r-l+1)-p)-fabs((sum[R]-sum[L-1])*1.0/(R-L+1)-p))<1e-8&&L<l)) l=L,r=R;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>T;
while(T--){
cin>>n>>p,l=r=-1;
for(int i=1;i<=n;++i){
char c;
cin>>c;
a[i]=(c^'0'),sum[i]=sum[i-1]+a[i];
}
s.clear(),tag=0;
for(int i=1;i<=n;++i){
s.insert(node({tag+p*(1-i),i}));
if(a[i]) ++tag;
auto it=s.lower_bound(node({tag-p*i}));
if(it!=s.end()) update((*it).b,i);
if(it!=s.begin()) --it,update((*it).b,i);
}
cout<<"Case #"<<++tot<<": "<<l-1<<endl;
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 5
Accepted
Test #1:
score: 5
Accepted
time: 0ms
memory: 5820kb
input:
100 10 0.827672 0010101011 4 0.932623 0100 1000 0.834002 011001110010111110000110101100010010100101101110110111100010101101111100110001011000110100010100011011000001100001010110111101111010110110000110011000111000011110101100100111111001111011011100111001011101010100111011100011110011100011110010001...
output:
Case #1: 6 Case #2: 1 Case #3: 10 Case #4: 0 Case #5: 0 Case #6: 1 Case #7: 0 Case #8: 0 Case #9: 0 Case #10: 0 Case #11: 0 Case #12: 4 Case #13: 5 Case #14: 564 Case #15: 0 Case #16: 0 Case #17: 0 Case #18: 0 Case #19: 0 Case #20: 0 Case #21: 0 Case #22: 0 Case #23: 0 Case #24: 844 Case #25: 0 Case...
result:
ok 100 lines
Subtask #2:
score: 22
Accepted
Test #2:
score: 22
Accepted
time: 2239ms
memory: 39048kb
input:
100 15 0.333333 000000000011000 10 0.418754 0101100001 2 0.499999 01 3 0.977951 001 2 0.249999 01 10 0.670229 0111011001 1000 0.500001 001101111110110010110000010010110001110010001101110111010011000010100011011101010110011011011010111110011100011000001000101011100011010100101101111110100101011010111...
output:
Case #1: 6 Case #2: 0 Case #3: 0 Case #4: 2 Case #5: 0 Case #6: 0 Case #7: 0 Case #8: 0 Case #9: 0 Case #10: 0 Case #11: 0 Case #12: 0 Case #13: 0 Case #14: 0 Case #15: 0 Case #16: 4333 Case #17: 0 Case #18: 0 Case #19: 123 Case #20: 0 Case #21: 0 Case #22: 0 Case #23: 0 Case #24: 0 Case #25: 0 Case...
result:
ok 100 lines
Extra Test:
score: 0
Extra Test Passed