CSES - Datatähti 2024 alku - Results
Submission details
Task:Säähavainnot
Sender:cppbetter
Submission time:2023-11-10 10:31:45 +0200
Language:C++ (C++20)
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttimescore
#10.01 s0details
#20.01 s0details
#30.01 s0details
#40.01 s0details
#50.01 s0details
#60.01 s0details
#70.01 s0details
#80.01 s0details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:57:12: warning: unused variable 'bestScore' [-Wunused-variable]
   57 |     double bestScore = 0;
      |            ^~~~~~~~~

Code

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <numeric>
#include <numbers>
#include <cmath>
#include <algorithm>
#include <array>
#include <unordered_map>
 
#define TEST
 
using namespace std;
 
stringstream ss;
int toler = 5;
 
vector<double> estimate(vector<double>::iterator first, vector<double>::iterator last)
{
    double dif = 0;
    for (auto it = first; it < last - 1; it++)
        dif += *(it + 1) - *it;
    
    dif /= 24;
    
    vector<double> output;
    output.resize(12, -1000);
 
    for(int i = 0; auto& e : output)
    {
        if(i++ < toler)
        {
            e = *(last - 1) + dif;
            
        }
    }
 
    return output;
}
 
int main()
{
    int n;
 
#ifdef TEST
    fstream f;
 
    f.open(__FILE__ "/../sample-data.txt");
 
    f >> n;
    n = 8000;
 
    int a = 0, b = 0;
 
    double bestScore = 0;
    double tl = 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.begin(), dt.begin() + 24);
        // Compare results
        for (int i = 0; i < 12; i++)
        {
            if (res[i] != -1000.0)
            {
                double dif = abs(res[i] - dt[i + 24]);
                if (dif < 0.75)
                {
                    cout << "C ";
                    a++;
                }
                else if (dif > 2.05)
                {
                    cout << "W ";
                    b++;
                }
                else
                {
                    cout << ". ";
                }
            }
            else
                cout << "_ ";
        }

        cout << "\n";
    }
 
    cout << "Value for tolerance: " << tl << "\n";
 
 
    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.begin(), dt.end());
        for (auto r : res)
        {
            if (r != -1000)
                ss << r << " ";
            else
                ss << "? ";
        }
 
        ss << "\n";
    }
 
    cout << ss.str();
#endif
 
    return 0;
}

Test details

Test 1

Verdict:

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
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _

...
Truncated

Test 2

Verdict:

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
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _

...
Truncated

Test 3

Verdict:

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
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _

...
Truncated

Test 4

Verdict:

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
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _

...
Truncated

Test 5

Verdict:

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
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _

...
Truncated

Test 6

Verdict:

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
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _

...
Truncated

Test 7

Verdict:

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
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _

...
Truncated

Test 8

Verdict:

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
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _ _ _ _ _ 
C C C C C _ _ _

...
Truncated