[ create a new paste ] login | about

Link: http://codepad.org/E3kjNEhS    [ raw code | output | fork ]

C++, pasted on Nov 10:
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    for(int cs=1; cs<=t; cs++)
    {
        double s,r1,r2,r3;
        cin>>s>>r1>>r2>>r3;
        double tarea=(sqrt(3)*s*s)/4.0;

        double sec1=(60.0/360.0)*acos(-1)*r1*r1;
        double sec2=(60.0/360.0)*acos(-1)*r2*r2;
        double sec3=(60.0/360.0)*acos(-1)*r3*r3;

        double height=(sqrt(3.0)*s)/2.0;
//        if(r1+r2<=s && r2+r3<=s && r3+r1<=s)
//        {
//            cout<<"Case #"<<cs<<": "<<fixed<<setprecision(10)<<tarea-(sec1+sec2+sec3)<<endl;
//            continue;
//        }
//        else if(r1>=s || r2>=s || r3>=s)
//        {
//            cout<<"Case #"<<cs<<": "<<fixed<<setprecision(10)<<0.0<<endl;
//            continue;
//        }
        bool flag=false;
        double bad=sec1+sec2+sec3;
      //  cout<<"initial bad = "<<bad<<endl;
        if(!(r1+r2<s))
        {
            double p=(r1+r2+s)/2.0;
            double area=p*(p-r1)*(p-r2)*(p-s);
            area=sqrt(area);
            double H=(2.0*area)/s;

            if(H+r3>=height) flag=true;
           // cout<<"------"<<area<<" "<<H<<endl;
            //calculating for sec1
            double side=sqrt(r1*r1-H*H);
            double narea=0.5*H*side;

            double rad=acos(H/r1);
            double deg=(180*rad)/acos(-1);
            double kun=60-(180.0-(90+deg));

            narea=narea+(kun/360.0)*acos(-1)*r1*r1;
            double cut=sec1-narea;

            //cout<<sec1<<"---"<<narea<<"==="<<cut<<"        "<<side<<endl;
            //calculating for sec2

            side=sqrt(r2*r2-H*H);
            narea=0.5*H*side;
            rad=acos(H/r2);
            deg=(180*rad)/acos(-1);
            kun=60-(180.0-(90+deg));

            narea=narea+(kun/360.0)*acos(-1)*r2*r2;
            cut=cut+(sec2-narea);

          //  cout<<cut<<" "<<side<<endl;
            bad-=cut;
        }
       // cout<<"after r1--r2, bad = "<<bad<<endl;
        if(!(r3+r2<s))
        {
            double p=(r3+r2+s)/2.0;
            double area=p*(p-r3)*(p-r2)*(p-s);
            area=sqrt(area);
            double H=(2.0*area)/s;

            if(H+r1>=height) flag=true;
            //cout<<"------"<<area<<" "<<H<<endl;
          //  calculating for sec1
            double side=sqrt(r3*r3-H*H);
            double narea=0.5*H*side;

            double rad=acos(H/r3);
            double deg=(180*rad)/acos(-1);
            double kun=60-(180.0-(90+deg));

            narea=narea+(kun/360.0)*acos(-1)*r3*r3;
            double cut=sec3-narea;

            //cout<<sec1<<"---"<<narea<<"==="<<cut<<"        "<<side<<endl;
           // calculating for sec2

            side=sqrt(r2*r2-H*H);
            narea=0.5*H*side;
            rad=acos(H/r2);
            deg=(180*rad)/acos(-1);
            kun=60-(180.0-(90+deg));

            narea=narea+(kun/360.0)*acos(-1)*r2*r2;
            cut=cut+(sec2-narea);

            //cout<<cut<<" "<<side<<endl;
            bad-=cut;
        }
        //cout<<"after r2--r3, bad = "<<bad<<endl;
        if(!(r1+r3<s))
        {
            double p=(r1+r3+s)/2.0;
            double area=p*(p-r1)*(p-r3)*(p-s);
            area=sqrt(area);
            double H=(2.0*area)/s;

            if(H+r2>=height) flag=true;
           // cout<<"------"<<area<<" "<<H<<endl;
           // calculating for sec1
            double side=sqrt(r1*r1-H*H);
            double narea=0.5*H*side;

            double rad=acos(H/r1);
            double deg=(180*rad)/acos(-1);
            double kun=60-(180.0-(90+deg));

            narea=narea+(kun/360.0)*acos(-1)*r1*r1;
            double cut=sec1-narea;

            //cout<<sec1<<"---"<<narea<<"==="<<cut<<"        "<<side<<endl;
           // calculating for sec2

            side=sqrt(r3*r3-H*H);
            narea=0.5*H*side;
            rad=acos(H/r3);
            deg=(180*rad)/acos(-1);
            kun=60-(180.0-(90+deg));

            narea=narea+(kun/360.0)*acos(-1)*r3*r3;
            cut=cut+(sec3-narea);

            //cout<<cut<<" "<<side<<endl;
            bad-=cut;
        }
        //cout<<"after r3--r1, bad = "<<bad<<endl;
        //cout<<tarea<<" "<<bad<<endl;
        double ans=tarea-bad;
        if(flag==true)
            ans=0;
        cout<<"Case #"<<cs<<": "<<fixed<<setprecision(6)<<max(0.0,ans)<<endl;
    }
}


Output:
1
Line 23: error: bits/stdc++.h: No such file or directory


Create a new paste based on this one


Comments: