CSES - Datatähti 2024 alku - Results
Submission details
Task:Säähavainnot
Sender:manttila
Submission time:2024-10-19 00:18:49 +0300
Language:C++ (C++17)
Status:READY
Result:0
Feedback
groupverdictscore
#1ACCEPTED0
Test results
testverdicttimescore
#1ACCEPTED0.03 s0details
#2ACCEPTED0.03 s0details
#3ACCEPTED0.03 s0details
#4ACCEPTED0.03 s0details
#5ACCEPTED0.03 s0details
#6ACCEPTED0.03 s0details
#7ACCEPTED0.03 s0details
#8ACCEPTED0.03 s0details

Code

#include <iostream>
#include <vector>
#include <iomanip>
#include <algorithm>

using namespace std;

// Function to calculate the predicted temperature based on previous hours
vector<string> predictTemperatures(const vector<double>& temperatures) {
    vector<string> predictions(12, "?"); // Initialize with "?"
    
    // Calculate predictions for the next 12 hours (hours 12-23)
    for (int hour = 0; hour < 12; ++hour) {
        double sum = 0.0;
        int count = 0;
        double avg_previous = 0.0;
        
        // Using temperatures from the previous 12 hours as a simple moving average
        for (int j = hour + 12 - 12; j < hour + 12; ++j) { // 12 hours before hour + 12
            if (j >= 0 && j < 24) {
                sum += temperatures[j];
                count++;
            }
        }

        if (count > 0) {
            avg_previous = sum / count;
        }

        // Incorporating some predictions from the last hours
        if (hour >= 1) {
            predictions[hour] = to_string((avg_previous + stod(predictions[hour - 1])) / 2.0);
        } else {
            predictions[hour] = to_string(avg_previous);
        }

        // Handling formatting
        predictions[hour].erase(predictions[hour].find('.') + 2); // Keep one decimal
    }

    return predictions;
}

int main() {
    int n; // Number of days
    cin >> n;

    for (int i = 0; i < n; i++) {
        vector<double> temperatures(24);
        for (int j = 0; j < 24; j++) {
            cin >> temperatures[j];
        }

        // Predict the next 12 hours (hours 12–23)
        vector<string> predictions = predictTemperatures(temperatures);

        // Print predictions
        for (int j = 0; j < 12; j++) {
            // Format to one decimal place
            cout << fixed << setprecision(1) << predictions[j] << " ";
        }
        cout << endl;
    }

    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.4 -0.4 -0.5 -0.5 -0.6 -0.6 ...
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.3 2.2 2.2 2.1 2.1 2.1 2.1 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
4.6 4.4 4.2 4.0 3.7 3.5 3.3 3....
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
16.3 15.9 15.3 14.6 14.0 13.4 ...
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.7 -6.8 -6.9 -7.0 -7.1 -7.1 ...
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
10.8 10.5 10.0 9.4 9.0 8.6 8.4...
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
0.1 0.0 -0.1 -0.3 -0.5 -0.7 -0...
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
13.6 13.4 13.1 12.8 12.5 12.2 ...
Truncated