#include <iostream>
#include <vector>
#include <set>
#include <cmath>
using namespace std;
bool check(double a, double b, double c){
return !(a >= b + c || b >= a + c || c >= b + c);
}
double square(double a, double b, double c){
double p = (a+b+c)/2;
return sqrt(p * (p-a) * (p-b) * (p-c));
bool is_palind(int k){
string s = to_string(k);
for(int i = 0; i < s.length() - i - 1; i++)
if(s[i] != s[s.length()-i-1])
return false;
return true;
void solve1(){
vector<double> lines(4);
double ans = -1;
for(auto &i : lines) cin >> i;
for(int i = 0; i < 4; i++)
for(int j = i + 1; j < 4; j++)
for(int k = j + 1; j < 4; j++)
if(check(lines[i],lines[j],lines[k]))
ans = max(ans,square(lines[i],lines[j], lines[k]));
ans == -1 ? cout << "No solution" : cout << ans;
void solve2(){
set<int> s;
for(int i = 1000; i < 10000; i++)
if(is_palind(i))
s.insert(i);
int n;
cin >> n;
s.find(n) != s.end() ? cout << n : cout << *upper_bound(s.begin(),s.end(),n);
// Pascal ABC.NET
type
Train = class
private
ПунктНазначения: string;
НомерПоезда: string;
ВремяOтправления: string;
Информация: string;
static function ЧастьНомера(s: string) := s.MatchValue('\d*').ToInteger;
public
constructor (ПН, НП, ВО: string; И: string := '');
begin
ПунктНазначения := ПН;
НомерПоезда := НП;
ВремяOтправления := ВО;
Информация := И
end;
static procedure УпорядочитьПункты(var a: array of Train) :=
a := a.OrderBy(p -> p.ПунктНазначения)
.ThenBy(p -> p.ВремяOтправления).ToArray;
static procedure УпорядочитьНомера(var a: array of Train) :=
a := a.OrderBy(p -> ЧастьНомера(p.НомерПоезда)).ToArray;
function ToString: string; override :=
$'{ПунктНазначения,-20} {НомерПоезда,-5} {ВремяOтправления,7}' +
$' {Информация}';
function ДобавитьИнформацию(Self: array of Train;
НомерПоезда, Информация: string): boolean; extensionmethod;
Result := True;
var i := Self.FindIndex(p -> p.НомерПоезда = НомерПоезда);
if i >= 0 then
Self[i].Информация := Информация
else
Result := False
var a := new Train[5];
a[0] := new Train('Адлер','4c','15:40');
a[1] := new Train('Санкт-Петербург','132п','07:19');
a[2] := new Train('Казань','8ф','12:35');
a[3] := new Train('Новосибирск','217п','18:05');
a[4] := new Train('Адлер','18c','08:32');
Train.УпорядочитьНомера(a);
a.PrintLines;
var np := ReadlnString('Номер поезда:');
var info := ReadlnString('Добавочная информация:');
if not a.ДобавитьИнформацию(np, info) then
Println('Не найден номер поезда');
Train.УпорядочитьПункты(a);
a.PrintLines
end.
#include <iostream>
#include <vector>
#include <set>
#include <cmath>
using namespace std;
bool check(double a, double b, double c){
return !(a >= b + c || b >= a + c || c >= b + c);
}
double square(double a, double b, double c){
double p = (a+b+c)/2;
return sqrt(p * (p-a) * (p-b) * (p-c));
}
bool is_palind(int k){
string s = to_string(k);
for(int i = 0; i < s.length() - i - 1; i++)
if(s[i] != s[s.length()-i-1])
return false;
return true;
}
void solve1(){
vector<double> lines(4);
double ans = -1;
for(auto &i : lines) cin >> i;
for(int i = 0; i < 4; i++)
for(int j = i + 1; j < 4; j++)
for(int k = j + 1; j < 4; j++)
if(check(lines[i],lines[j],lines[k]))
ans = max(ans,square(lines[i],lines[j], lines[k]));
ans == -1 ? cout << "No solution" : cout << ans;
}
void solve2(){
set<int> s;
for(int i = 1000; i < 10000; i++)
if(is_palind(i))
s.insert(i);
int n;
cin >> n;
s.find(n) != s.end() ? cout << n : cout << *upper_bound(s.begin(),s.end(),n);
}
// Pascal ABC.NET
type
Train = class
private
ПунктНазначения: string;
НомерПоезда: string;
ВремяOтправления: string;
Информация: string;
static function ЧастьНомера(s: string) := s.MatchValue('\d*').ToInteger;
public
constructor (ПН, НП, ВО: string; И: string := '');
begin
ПунктНазначения := ПН;
НомерПоезда := НП;
ВремяOтправления := ВО;
Информация := И
end;
static procedure УпорядочитьПункты(var a: array of Train) :=
a := a.OrderBy(p -> p.ПунктНазначения)
.ThenBy(p -> p.ВремяOтправления).ToArray;
static procedure УпорядочитьНомера(var a: array of Train) :=
a := a.OrderBy(p -> ЧастьНомера(p.НомерПоезда)).ToArray;
function ToString: string; override :=
$'{ПунктНазначения,-20} {НомерПоезда,-5} {ВремяOтправления,7}' +
$' {Информация}';
end;
function ДобавитьИнформацию(Self: array of Train;
НомерПоезда, Информация: string): boolean; extensionmethod;
begin
Result := True;
var i := Self.FindIndex(p -> p.НомерПоезда = НомерПоезда);
if i >= 0 then
Self[i].Информация := Информация
else
Result := False
end;
begin
var a := new Train[5];
a[0] := new Train('Адлер','4c','15:40');
a[1] := new Train('Санкт-Петербург','132п','07:19');
a[2] := new Train('Казань','8ф','12:35');
a[3] := new Train('Новосибирск','217п','18:05');
a[4] := new Train('Адлер','18c','08:32');
Train.УпорядочитьНомера(a);
a.PrintLines;
var np := ReadlnString('Номер поезда:');
var info := ReadlnString('Добавочная информация:');
if not a.ДобавитьИнформацию(np, info) then
Println('Не найден номер поезда');
Train.УпорядочитьПункты(a);
a.PrintLines
end.