QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#671070#7013. Rikka with Antspengpeng_fudanWA 36ms3780kbC++232.5kb2024-10-24 10:36:022024-10-24 10:36:03

Judging History

你现在查看的是最新测评结果

  • [2024-10-24 10:36:03]
  • 评测
  • 测评结果:WA
  • 用时:36ms
  • 内存:3780kb
  • [2024-10-24 10:36:02]
  • 提交

answer

#include<bits/stdc++.h>
#define double long double
using namespace std;
void solve(){
    int n;
    cin>>n;
    vector<int> a(n);
    for(int i=0;i<n;i++)   cin>>a[i];
    int s1,e1,s2,e2;
    cin>>s1>>e1>>s2>>e2;s1--,e1--,s2--,e2--;
    pair<int,int> g[4];
    auto get=[&](int s1,int e1,int s2,int e2)->double {
        for(int i=0;i<4;i++){
            g[i]={0,0};
            vector<int> lzg(n);
            int t1=((i&1)?-1:1),t2=((i>>1&1)?-1:1);
            for(int j=s1;j!=e1;j=(j+t1+n)%n)    {
                t1==1?lzg[j]++:lzg[(j-1+n)%n]++;
            }
            for(int j=s2;j!=e2;j=(j+t2+n)%n)    {
                t2==1?lzg[j]++:lzg[(j-1+n)%n]++;
            }
            for(int j=s1;j!=e1;j=(j+t1+n)%n)    {
                int w=(t1==1?(lzg[j]==2?3:1):(lzg[(j-1+n)%n]==2?3:1));
                g[i].first+=w*(t1==1?a[j]:a[(j-1+n)%n]);
            }
            for(int j=s2;j!=e2;j=(j+t2+n)%n){
                int w=(t2==1?(lzg[j]==2?3:1):(lzg[(j-1+n)%n]==2?3:1));
                g[i].second+=w*(t2==1?a[j]:a[(j-1+n)%n]);
            }
        }
        int a0=g[0].first,a1=g[1].first,a2=g[2].first,a3=g[3].first;
        if(a0-a1-a2+a3==0)  {
            return a2<=a3?1:0;
        } 
        if(a0>=a1&&a2>=a3)  return 0;
        else if(a0<=a1&&a2<=a3) return 1;
        double ans=(double)(a3-a1)/(a0-a1-a2+a3);
        return ans;
    };
    double q1,q2;
    q1=get(s1,e1,s2,e2);
    swap(s1,s2),swap(e1,e2);
    q2=get(s1,e1,s2,e2);
    if((q1!=0&&q1!=1)){
        if(q2==1){
            if(g[0].second>g[2].second) q1=0;
            else q1=1;
        }
        else if(q2==0){
            if(g[1].second>g[3].second) q1=0;
            else q1=1;
        }
    }
    if((q2!=0&&q2!=1)){
        if(q1==1){
            if(g[0].second>g[1].second) q2=0;
            else q2=1;
        }
        else if(q1==0){
            if(g[2].second>g[3].second) q2=0;
            else q2=1;
        }

    }
    if(q1>1)    q1=1;
    if(q1<0)    q1=0;
    if(q2>1)    q2=1;
    if(q2>1)    q2=0;
    cout<<setprecision(16)<<q2*q1*g[0].second+(1-q2)*q1*g[1].second+q2*(1-q1)*g[2].second+(1-q2)*(1-q1)*g[3].second<<' ';
    cout<<setprecision(16)<<q2*q1*g[0].first+(1-q2)*q1*g[1].first+q2*(1-q1)*g[2].first+(1-q2)*(1-q1)*g[3].first<<'\n';
}   
int main(){
    ios::sync_with_stdio(0),cin.tie(0);
    int _ = 1;
    cin>>_;
    while(_--)  solve();
}
/*
1
26
18 44 37 21 44 44 5 15 43 44 44 37 19 10 22 14 41 37 42 18 14 34 3 17 30 42
13 2 13 15
*/

詳細信息

Test #1:

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

input:

2
5
1 5 2 4 3
1 2 3 4
5
1 5 2 4 3
1 3 2 4

output:

1 2
14.66666666666667 14.66666666666667

result:

ok 2 cases

Test #2:

score: -100
Wrong Answer
time: 36ms
memory: 3780kb

input:

5000
5
8 22 47 25 13
3 5 3 1
20
9 24 41 8 23 31 48 15 46 5 17 36 29 40 36 43 34 33 29 26
16 4 15 5
3
8 22 33
1 2 2 3
26
18 44 37 21 44 44 5 15 43 44 44 37 19 10 22 14 41 37 42 18 14 34 3 17 30 42
13 2 13 15
26
31 31 41 11 35 49 13 29 33 11 27 6 16 25 47 40 2 33 27 35 35 29 48 35 5 7
17 3 13 3
26
30 ...

output:

72 30
571.6288659793814 571.6288659793814
8 22
378 29
728.8988764044944 728.8988764044944
356 103
509.9169811320755 509.9169811320755
87 63
80 36
157 99
683 100
283 88
967 769
216 626
424.0752941176471 424.0752941176471
639 152
179 122
687.9125683060109 687.9125683060109
62.85714285714286 62.8571428...

result:

wrong answer In case 1063, the first value expected '907.000000000000', but found '1136.000000000000', error '0.201584507042'.