| Task: | Säähavainnot |
| Sender: | a256 |
| Submission time: | 2023-10-30 18:22:10 +0200 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | 19 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 19.25 |
| test | verdict | time | score | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.02 s | 2.5 | details |
| #2 | ACCEPTED | 0.02 s | 2.75 | details |
| #3 | ACCEPTED | 0.02 s | 3 | details |
| #4 | ACCEPTED | 0.02 s | 2.13 | details |
| #5 | ACCEPTED | 0.02 s | 2.25 | details |
| #6 | ACCEPTED | 0.02 s | 2 | details |
| #7 | ACCEPTED | 0.02 s | 2.25 | details |
| #8 | ACCEPTED | 0.02 s | 2.38 | details |
Compiler report
input/code.cpp: In function 'void ennusta(int)':
input/code.cpp:56:28: warning: unused variable 'deltat' [-Wunused-variable]
56 | double ts=T[i][23],deltat=0;
| ^~~~~~Code
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 10123
#define NN 2000
#define EI (-1e5)
int n;
double T[N][24],dt[N][24],E[N][12],S[12],avg[12];
map<pair<double,double>,double> virtaus[N];
double mittaus[8000][24],oikea[8000][24];
void genvirtaus(){
for(int i=0;i<n;++i){
for(int h=0;h<23;++h){
virtaus[h].insert({{T[i][h],T[i][h]-T[i][h-1]},T[i][h+1]-T[i][h]});
}
}
}
double kk(double pt,double dt,int h){
double distance=1e5,mr=0;
for(auto P:virtaus[h]){
auto p=P.first;
double dd=p.first*p.first+p.second*p.second;
if(dd<distance){
distance=dd;
mr=P.second;
}
}
return mr;
}
void luedata(){
ifstream in;
in.open("sample_data.txt");
int Nn;
in>>Nn;
for(int i=0;i<8000;++i){
for(int h=0;h<24;++h) in>>mittaus[i][h];
for(int h=0;h<12;++h) in>>oikea[i][h];
}
in.close();
}
void ennusta(int i){
for(int h=0;h<12;++h){
dt[i][h]=T[i][h+1]-T[i][h];
}
double avg=0;
for(int h=0;h<24;++h) avg+=T[i][h];
avg/=24;
double ts=T[i][23],deltat=0;
for(int h=0;h<12;++h){
ts+=dt[i][h];
//deltat=kk(ts,deltat,h);
//ts+=deltat;
//E[i][h]=ts;
E[i][h]=(1.5*ts+0.5*T[i][h]+0.5*avg)/2.5;
//E[i][h]=avg;
S[h]+=E[i][h];
}
}
void solve(){
genvirtaus();
for(int i=0;i<n;++i){
ennusta(i);
}
}
void prosentti(){
luedata();
n=1000;
double p=0;
ofstream out;
out.open("weather_output");
for(int i=0;i<n;++i){
for(int h=0;h<24;++h){
T[i][h]=mittaus[i][h];
}
}
genvirtaus();
for(int i=0;i<n;++i){
ennusta(i);
int a=0,b=0;
for(int h=0;h<12;++h){
double d=abs(E[i][h]-oikea[i][h]);
if(d<0.75){
++a;
} else if(d>=2.05){
++b;
}
}
p+=max(0,a-b);
for(int h=0;h<24;++h) out<<mittaus[i][h]<<' ';
for(int h=0;h<12;++h) out<<oikea[i][h]<<' ';
out<<'\n';
for(int h=0;h<12;++h) out<<E[i][h]<<' ';
out<<'\n';
}
out.close();
cout<<p/(24*n)<<'\n';
}
void ratkaisu(){
cin>>n;
for(int i=0;i<n;++i){
for(int h=0;h<24;++h) cin>>T[i][h];
}
solve();
for(int i=0;i<n;++i){
for(int h=0;h<6;++h){
printf("%.1f ",E[i][h]);
}
for(int h=6;h<12;++h){
printf("? ");
}
}
puts("");
}
int main(){
//srand(time(NULL));
cin.tie(0)->sync_with_stdio(0);
ratkaisu();
//prosentti();
//simulaatio();
}
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.1 0.1 0.0 -0.0 -0.1 -0.0 ? ?... 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.6 2.6 2.1 2.3 2.0 1.9 ? ? ? ... 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 |
|---|
| 8.0 8.1 8.0 7.0 6.8 6.5 ? ? ? ... 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 |
|---|
| 17.7 17.2 16.8 16.4 15.7 14.7 ... 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 |
|---|
| -5.2 -5.2 -5.3 -6.0 -6.1 -5.8 ... 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 |
|---|
| 12.6 12.9 11.5 10.4 8.9 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.9 -0.3 -0.4 -1.0 -1.8 -2.3 ... 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 |
|---|
| 14.7 14.5 14.1 14.0 13.6 12.9 ... Truncated |
