include iostream include vector include algorithm include string using

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
vector<vector<pair<int,double>> > source(8);
int comp(pair<int,double> l, pair<int,double> r)
{
return l.second > r.second;
}
// функция принимает на вход вектор пар значений и вероятностей одной коробки и возвращает скорректированное значение
int foo(vector<pair<int,double>> data, int index)
{
sort(data.begin(), data.end(), comp); // сортировка по убыванию вероятностей
switch (index)
{
case 0: // случай для первой коробки
for(int i = 0; i < data.size(); ++i)
{
if(data[i].first == 0 || data[i].first == 1 || data[i].first == 2 || data[i].first == 3)
return data[i].first;
}
case 2 : // случай для третьей коробки
for(int i = 0; i < data.size(); ++i)
{
if(data[i].first == 0 || data[i].first == 1)
return data[i].first;
}
case 4: // для пятой коробки
for(int i = 0; i < data.size(); ++i)
{
if(data[i].first == 1 || data[i].first == 2)
return data[i].first;
}
case 5: // для седьмой
for(int i = 0; i < data.size(); ++i)
{
if(data[i].first == 0 || data[i].first == 9)
return data[i].first;
}
default: // для остальных четырех возврашаем значение с наибольшей вероятностью
return data[0].first;
}
}
// возврашает исправленную дату
string date_result()
{
string date = "";
for(int i = 0; i < source.size(); ++i)
{
if(i == 1 || i == 3)
{
date+= (foo(source[i], i) + '0');
date+= '.';
}
else
date+= (foo(source[i], i) + '0');
}
return date;
}
int main()
{
int length = 8, num = 10;
vector<pair<int,double>> temp(num);
double ver;
for(int i = 0; i < length; ++i)
{
for(int j = 0; j < num; ++j)
{
cin >> ver;
temp[j] = pair<int,double> (j, ver);
}
source[i] = temp;
}
cout << date_result() << endl;
}