QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#101469 | #5433. Absolute Difference | 18Michael | WA | 5ms | 18132kb | C++14 | 3.3kb | 2023-04-29 23:34:18 | 2023-04-29 23:34:22 |
Judging History
answer
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int MxN=1000002;
int n,m,t=0,sum1=0,sum2=0,t1=0;
double ans=0,res,suml;
int l[MxN],r[MxN],l1[MxN],r1[MxN],id[MxN],v[MxN];
double val[MxN];
bool u1[MxN],u2[MxN];
template<class T>void read(T &x)
{
x=0;int f=0;char ch=getchar();
while(ch<'0' || ch>'9')f|=(ch=='-'),ch=getchar();
while(ch>='0' && ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
x=f? -x:x;return ;
}
inline bool cmp(int x,int y)
{
return v[x]<v[y];
}
int main()
{
//freopen("A.in","r",stdin);
read(n),read(m);
for(int i=1;i<=n+m;++i)read(l[i]),read(r[i]),v[++t1]=l[i],id[t1]=t1,v[++t1]=r[i],id[t1]=t1,(i<=n? sum1:sum2)+=r[i]-l[i];
//assert(0<=sum1 && sum1<=2000000000 && 0<=sum2 && sum2<=2000000000);
sort(id+1,id+t1+1,cmp);
for(int i=1;i<=t1;++i)
{
if(i==1 || v[id[i]]^v[id[i-1]])++t,val[t]=v[id[i]];
(id[i]&1? l[(id[i]+1)>>1]:r[id[i]>>1])=t;
}
//for(int i=1;i<=n+m;++i)printf("l[%d]=%d r[%d]=%d\n",i,l[i],i,r[i]);
int test=0;
for(int i=1;i<=n+m;++i)test+=r[i]-l[i];
//assert(0<=test && test<=(n+m)*4);
for(int i=1;i<=n;++i)for(int j=l[i];j<r[i];++j)/*assert(!u1[j]),*/u1[j]=1;
for(int i=n+1;i<=n+m;++i)for(int j=l[i];j<r[i];++j)/*assert(!u2[j]),*/u2[j]=1;
for(int i=1;i<t;++i)if(u1[i] && u2[i])ans+=(val[i+1]-val[i])/3.0*(val[i+1]-val[i])*(val[i+1]-val[i]);
if(!sum1 && !sum2)
{
//puts("yes");
int cnt1=0,cnt2=0;
for(int i=1;i<=n+m;++i)/*assert(l[i]==r[i]),*/(i<=n? u1[l[i]]:u2[l[i]])=1;
for(int i=1;i<=t;++i)
{
//printf("val[%d]=%d cnt1:%d cnt2:%d\n",i,val[i],cnt1,cnt2);
if(u1[i])ans+=cnt2*val[i]-(m-cnt2)*val[i],++cnt1;
if(u2[i])ans+=cnt1*val[i]-(n-cnt1)*val[i],++cnt2;
}
return 0&printf("%.15lf",ans/n/m);
}
if(sum1 && sum2)
{
//printf("u1:");for(int i=1;i<=t;++i)printf("%d ",u1[i]);puts("");
//printf("u2:");for(int i=1;i<=t;++i)printf("%d ",u2[i]);puts("");
res=suml=0;
for(int i=1;i<t;++i)
{
if(u1[i])ans+=(suml*(val[i]+val[i+1])*0.5-res)*(val[i+1]-val[i]);
if(u2[i])suml+=val[i+1]-val[i],res+=(val[i+1]-val[i])*(val[i+1]+val[i])*0.5;
//printf("aft %d: suml:%lf res:%lf ans:%lf\n",i,suml,res,ans);
}
res=suml=0;
for(int i=t-1;i;--i)
{
if(u1[i])ans+=(res-suml*(val[i]+val[i+1])*0.5)*(val[i+1]-val[i]);
if(u2[i])suml+=val[i+1]-val[i],res+=(val[i+1]-val[i])*(val[i+1]+val[i])*0.5;
//printf("aft %d: suml:%lf res:%lf ans:%lf\n",i,suml,res,ans);
}
return 0&printf("%.15lf",ans/sum1/sum2);
}
if(!sum2)
{
swap(n,m),swap(sum1,sum2);
for(int i=1;i<=n+m;++i)l1[i]=l[i],r1[i]=r[i];
for(int i=1;i<=m;++i)l[i]=l1[n+i],r[i]=r1[n+i];
for(int i=m+1;i<=m+n;++i)l[i]=l1[i-m],r[i]=r1[i-m];
for(int i=1;i<=t;++i)swap(u1[i],u2[i]);
}
for(int i=1;i<=n;++i)/*assert(l[i]==r[i]),*/u1[l[i]]=1;
//printf("u1:");for(int i=1;i<=t;++i)printf("%d ",u1[i]);puts("");
//printf("u2:");for(int i=1;i<=t;++i)printf("%d ",u2[i]);puts("");
res=suml=0;
for(int i=1;i<t;++i)
{
if(u2[i])suml+=val[i+1]-val[i],res+=(val[i+1]-val[i])*(val[i+1]+val[i])*0.5;
if(u1[i+1])ans+=suml*val[i+1]-res;
//printf("aft %d: %lf %lf")
}
res=suml=0;
for(int i=t-1;i;--i)
{
if(u2[i])suml+=val[i+1]-val[i],res+=(val[i+1]-val[i])*(val[i+1]+val[i])*0.5;
if(u1[i])ans+=res-suml*val[i];
}
return 0&printf("%.15lf",ans/n/sum2);
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 13960kb
input:
1 1 0 1 0 1
output:
0.333333333333333
result:
ok found '0.333333333', expected '0.333333333', error '0.000000000'
Test #2:
score: 0
Accepted
time: 3ms
memory: 18064kb
input:
1 1 0 1 1 1
output:
0.500000000000000
result:
ok found '0.500000000', expected '0.500000000', error '0.000000000'
Test #3:
score: 0
Accepted
time: 1ms
memory: 13764kb
input:
1 1 -1000000000 1000000000 -1000000000 1000000000
output:
666666666.666666626930237
result:
ok found '666666666.666666627', expected '666666666.666666627', error '0.000000000'
Test #4:
score: 0
Accepted
time: 0ms
memory: 14016kb
input:
1 1 -1000000000 0 0 1000000000
output:
1000000000.000000000000000
result:
ok found '1000000000.000000000', expected '1000000000.000000000', error '0.000000000'
Test #5:
score: 0
Accepted
time: 0ms
memory: 13712kb
input:
1 1 -1000000000 -1000000000 -1000000000 1000000000
output:
1000000000.000000000000000
result:
ok found '1000000000.000000000', expected '1000000000.000000000', error '0.000000000'
Test #6:
score: 0
Accepted
time: 1ms
memory: 18056kb
input:
1 1 -999999999 1000000000 -1000000000 -1000000000
output:
1000000000.500000000000000
result:
ok found '1000000000.500000000', expected '1000000000.500000000', error '0.000000000'
Test #7:
score: 0
Accepted
time: 2ms
memory: 17928kb
input:
1 1 -1000000000 1000000000 -999999999 -999999999
output:
999999999.000000000000000
result:
ok found '999999999.000000000', expected '999999999.000000000', error '0.000000000'
Test #8:
score: 0
Accepted
time: 5ms
memory: 13972kb
input:
1 1 1000000000 1000000000 -1000000000 -1000000000
output:
2000000000.000000000000000
result:
ok found '2000000000.000000000', expected '2000000000.000000000', error '0.000000000'
Test #9:
score: 0
Accepted
time: 5ms
memory: 13720kb
input:
1000 1000 -2175 -2174 -1068 -1065 -1721 -1718 777 834 1162 1169 -3529 -3524 3966 3993 1934 1952 -234 -223 -4967 -4947 8500 8510 5272 5276 -6048 -6033 -34 -22 700 705 -7890 -7886 5538 5543 4114 4126 -9201 -9162 -1521 -1519 -5103 -5100 439 441 993 997 -1684 -1680 -8413 -8404 6724 6728 -3242 -3239 2616...
output:
6717.117145739454827
result:
ok found '6717.117145739', expected '6717.117145739', error '0.000000000'
Test #10:
score: 0
Accepted
time: 3ms
memory: 17856kb
input:
1000 1000 -5010 -4999 -2128 -2113 -5798 -5765 705 713 -3956 -3938 -5308 -5307 6759 6772 -772 -770 -860 -859 2308 2323 -5500 -5500 5140 5177 -6747 -6733 7509 7511 8864 8870 -6382 -6374 1901 1904 -5763 -5760 3019 3027 2962 2963 -314 -301 -222 -203 -726 -724 -62 -58 -1203 -1195 -5216 -5215 -4298 -4292 ...
output:
6682.581127471436048
result:
ok found '6682.581127471', expected '6682.581127471', error '0.000000000'
Test #11:
score: 0
Accepted
time: 0ms
memory: 13828kb
input:
1000 1000 770 770 5869 5869 -8786 -8786 7549 7549 -4165 -4165 4023 4023 -9779 -9779 7797 7797 1105 1105 508 508 7653 7653 -359 -359 9393 9393 -9363 -9363 -4160 -4160 -3682 -3682 9409 9409 -8548 -8548 -9908 -9908 -7494 -7494 3751 3751 2326 2326 -3311 -3311 3651 3651 -7663 -7663 5376 5376 -7071 -7071 ...
output:
6673.756816891039307
result:
ok found '6673.756816891', expected '6673.756816891', error '0.000000000'
Test #12:
score: 0
Accepted
time: 0ms
memory: 14016kb
input:
1000 1000 -735 -735 -829 -829 -6376 -6376 8558 8558 155 155 5533 5533 8800 8800 -1738 -1738 919 919 52 52 2076 2076 -6911 -6911 139 139 6733 6733 9923 9923 -4619 -4619 -9429 -9429 9902 9902 -5984 -5984 2580 2580 8738 8738 7960 7960 3388 3388 -2689 -2689 7986 7986 2565 2565 -8908 -8908 9359 9359 -434...
output:
6479.384680000000117
result:
ok found '6479.384680000', expected '6479.384680000', error '0.000000000'
Test #13:
score: 0
Accepted
time: 3ms
memory: 15912kb
input:
100 10000 82274 82408 61583 61902 -54304 -54007 -48488 -48316 -92517 -91939 85001 85160 33086 33374 36458 36573 -15785 -11838 93971 94863 50496 53064 -68609 -68302 -91873 -91176 -96937 -96753 9481 9976 83600 83691 17742 18693 55685 56039 56323 57845 88761 90277 22886 23642 30848 31047 -34662 -33470 ...
output:
65016.298634797611157
result:
ok found '65016.298634798', expected '65016.298634798', error '0.000000000'
Test #14:
score: -100
Wrong Answer
time: 1ms
memory: 18132kb
input:
100 10000 -89227 -88897 -70959 -68913 -60233 -59597 81753 81820 96806 97104 -58324 -57553 -38857 -37087 -81344 -81311 22701 22890 -68517 -66298 -19753 -19047 -80409 -79437 6355 7569 -13999 -12586 -84981 -82448 -29865 -29624 -76088 -75272 70697 72265 85493 86097 82574 84418 -8937 -8079 -92387 -90609 ...
output:
65645.564715856293333
result:
wrong answer 1st numbers differ - expected: '65683.8697071', found: '65645.5647159', error = '0.0005832'