CSES - Datatähti 2024 alku - Results
Submission details
Task:Säähavainnot
Sender:cppbetter
Submission time:2023-11-03 23:12:28 +0200
Language:C++ (C++20)
Status:READY
Result:12
Feedback
groupverdictscore
#1ACCEPTED11.5
Test results
testverdicttimescore
#1ACCEPTED0.02 s1.63details
#2ACCEPTED0.02 s1.63details
#3ACCEPTED0.02 s1details
#4ACCEPTED0.02 s1.25details
#5ACCEPTED0.02 s1.25details
#6ACCEPTED0.02 s2.13details
#7ACCEPTED0.02 s1.38details
#8ACCEPTED0.02 s1.25details

Code

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <numeric>
#include <numbers>
#include <cmath>
#include <algorithm>

//#define TEST

using namespace std;

stringstream ss;

vector<double> estimate(vector<double>& data)
{
    auto avrg = accumulate(data.begin(), data.end(), 0.0) / data.size();
    
    vector<double> output;
    output.resize(12);
    if(abs(avrg - *max_element(data.begin(), data.end())) < 2.9)
        fill(output.begin(), output.end(), avrg);
    else
        fill(output.begin(), output.end(), -1000);

    return output;
}

int main()
{
    int n;

#ifdef TEST
    fstream f;

    f.open(__FILE__ "/../../sample-data.txt");

    f >> n;

    int a = 0, b = 0;

    for (int i = 0; i < n; i++)
    {
        vector<double> dt;

        for (int j = 0; j < 36; j++)
        {
            double v;
            f >> v;
            dt.push_back(v);
        }

        auto res = estimate(dt);
        // Compare results
        for (int i = 0; i < 12; i++)
        {
            if (res[i] != -1000.0)
            {
                double dif = abs(res[i] - dt[24 + i]);
                if (dif < 0.75)
                    a++;
                else if (dif > 2.05)
                    b++;
            }
        }
    }

    cout << "Estimate results: (a: " << a << "), (b: " << b << ")\n";
    cout << "Final score: " << max(0.0, (25.0 * (a - b)) / ((double) n));

    f.close();
#else
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        vector<double> dt;

        for (int j = 0; j < 24; j++)
        {
            double v;
            cin >> v;
            dt.push_back(v);
        }

        auto res = estimate(dt);
        for (auto r : res)
        {
            if (r != -1000)
                ss << r << " ";
            else
                ss << "? ";
        }

        ss << "\n";
    }

    cout << ss.str();
#endif

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
1000
-0.4 -0.1 -0.2 -0.3 -0.4 -0.5 ...

correct output
0.4 0.4 0.5 0.8 0.9 1.1 1.3 1....

user output
-0.504167 -0.504167 -0.504167 ...
Truncated

Test 2

Verdict: ACCEPTED

input
1000
2.9 2.9 2.9 2.1 2.6 2 2 2.2 2....

correct output
2.3 1.6 1.5 1.1 1 0.7 0.6 0.8 ...

user output
2.2625 2.2625 2.2625 2.2625 2....
Truncated

Test 3

Verdict: ACCEPTED

input
1000
6.6 6 6.4 6 4.6 4.6 4.2 4.3 4....

correct output
10 10.9 10.3 10.1 9.1 7.3 5.7 ...

user output
? ? ? ? ? ? ? ? ? ? ? ? 
12.9625 12.9625 12.9625 12.962...
Truncated

Test 4

Verdict: ACCEPTED

input
1000
19.4 20.2 19.1 18.9 18.3 17.3 ...

correct output
18 18.2 17 17.5 17.2 16.2 12 8...

user output
? ? ? ? ? ? ? ? ? ? ? ? 
8.09167 8.09167 8.09167 8.0916...
Truncated

Test 5

Verdict: ACCEPTED

input
1000
-5.7 -5.8 -5.8 -5.9 -7.1 -6.9 ...

correct output
-4.2 -4.1 -4 -3.8 -3.5 -3.2 -3...

user output
-6.5 -6.5 -6.5 -6.5 -6.5 -6.5 ...
Truncated

Test 6

Verdict: ACCEPTED

input
1000
14.8 14.8 15.4 12.9 11.8 9.7 9...

correct output
11.8 11 11.6 10.8 10.4 10.4 10...

user output
? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ?

...
Truncated

Test 7

Verdict: ACCEPTED

input
1000
0.7 1 2 1.4 0.6 -0.4 -0.9 -0.7...

correct output
-1.3 -0.5 -0.6 -1 -3.2 -7.2 -6...

user output
? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ?

...
Truncated

Test 8

Verdict: ACCEPTED

input
1000
15.1 15.3 14.9 14.4 14.4 13.7 ...

correct output
15.6 15.9 16 15.2 14.6 14.4 13...

user output
12.85 12.85 12.85 12.85 12.85 ...
Truncated