Координаты даны в двоичной системе счисления, поэтому переводим их в десятичную.
Потом сортируем по порядку по номерам точек.
И отмечаем точки на графике, соединяя соседние отрезком.
Я все эти преобразования сделал в таблице Эксель.
Саму таблицу и картинку, полученную после нанесения всех точек смотри внизу.
А вот координаты точек, отсортированные и в десятичной системе:
№ x y
1 11 7
2 12 7
3 13 6
4 13 5
5 14 6
6 15 6
7 16 5
8 15 5
9 12 3
10 10 1
11 7 1
12 5 2
13 4 1
14 2 2
15 3 2
16 4 3
17 3 6
18 1 7
19 3 8
20 4 8
21 5 7
22 6 5
23 7 6
24 9 6
25 8 5
26 7 5
27 8 4
28 10 4
29 12 5
30 12 6
31 11 7

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
struct river{
string name;
double length;
double depth;
bool ships;
};
signed main(){
int n;
cin >> n;
river a[n];
for(int i = 0; i < n; i++)
cin >> a[i].name >> a[i].length >> a[i].depth >> a[i].ships;
vector<river> ans;
for(auto i: a)
if(i.length > 2 && i.ships)
ans.push_back(i);
for(auto i: ans){
cout << "name: " << i.name << "\n";
cout << "length: " << i.length << "\n";
cout << "depth: " << i.depth << "\n";
cout << "ships?: Yes";
}
}