Программа на Ограничение по времени работы программы: 1 секунда
Отсортируйте список рациональных дробей, заданных в виде .
ВХОДНЫЕ ДАННЫЕ
Программа получает на вход дробей: сначала задается число (, потом идет строк, в каждой из которорых записана одна дробь. Дробь записана в виде , где и —натуральные числа.
ВЫХОДНЫЕ ДАННЫЕ
Программа должна вывести список этих дробей в порядке неубывания. Если в списке есть две равные дроби , то раньше выводится дробь, у которой меньше числитель.
Объяснение:
#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
int N, A, B;
cin >> N;
vector < vector <int>> IO;
int lastDay = 0;
for (int i = 0; i < N; i++) {
cin >> A >> B;
IO.push_back(vector<int>());
IO[i].push_back(A);
IO[i].push_back(B);
IO[i].push_back(i);
}
sort(IO.begin(), IO.end());
for (int i = 0; i < N; i++)
{
if (lastDay >= IO[i][1]) {
IO[i][0] = -1;
IO[i][1] = -1;
}
else {
if (lastDay < IO[i][0]) {
lastDay = IO[i][1];
}
else if (lastDay >= IO[i][0]) {
IO[i][0] = lastDay+1;
lastDay = IO[i][1];
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (IO[j][2] == i) {
cout << IO[j][0] << " " << IO[j][1] << endl;
break;
}
}
}
return 0;
}
1. по векторам:
использовать чертежник
алг
нач
сместиться на вектор (1.75,0)
опустить перо
сместиться на вектор (0.5,0)
сместиться на вектор (0,0.5)
сместиться на вектор (1,0)
сместиться на вектор (-1, 1)
сместиться на вектор (0.75,0)
сместиться на вектор (-1,1)
сместиться на вектор (-1,-1)
сместиться на вектор (0.75,0)
сместиться на вектор (-1,-1)
сместиться на вектор (1,0)
сместиться на вектор (0,-0.5)
поднять перо
сместиться в точку (0,0)
кон
2. по точкам:
использовать чертежник
алг
нач
сместиться в точку (1.75,0)
опустить перо
сместиться в точку (2.25,0)
сместиться в точку (2.25,0.5)
сместиться в точку (3.25,0.5)
сместиться в точку (2.25, 1.5)
сместиться в точку (3,1.5)
сместиться в точку (2,2.5)
сместиться в точку (1,1.5)
сместиться в точку (1.75,1.5)
сместиться в точку (0.75,0.5)
сместиться в точку (1.75,0.5)
сместиться в точку (1.75,0)
поднять перо
сместиться в точку (0,0)
кон