моя задача
1) по количеству решенных задач в порядке убывания
2) при количестве решенных задач - по времени штрафа в порядке возрастания
3) Когда количество выполненных заданий и время штрафа равны - по показателям команд в порядке возрастания.
файл ввода будет выглядеть так:
Первая строка содержитнатуральное число n (1 ≤ n≤105) - количество команд, участвующих в конкурсе.
В следующих n строках содержатся два числа S - количество решенных задач (0 ≤ S ≤ 100) и штрафвремя T (1 ≤ T ≤ 1000000) i-й команды.
Пример:
6
3 50
5 720
1 7
0 0
8 500
8 500
, поэтому выходной файл будет:
5 6 2 1 3 4
#include <iostream>
using namespace std;
void swap(int *xp, int *yp)
{
int temp = *xp;
*xp = *yp;
*yp = temp;
}
void printArray(int A[],int B[], int size)
{
int i,xx;
for (i = size-1; i >= 0; i--) {
for (int x = 0; x < size; x++) {
if (A[i] == B[x]) {
cout << x+1 << " ";
//break;
}
}
}
}
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int qarray, largest;
cin >> qarray;
int *task = new int[qarray];
int *newtask = new int[qarray];
int *time = new int[qarray];
for (int i = 0; i < qarray; i++)
{
cin >> task[i];
cin >> time[i];
}
for (int i = 0; i <= qarray - 1; i++) {
newtask[i] = task[i];
}
int i, j;
for (i = 0; i < qarray - 1; i++) {
// Last i elements are already in place
for (j = 0; j < qarray - i - 1; j++) {
if (task[j] > task[j + 1]) {
swap(&task[j], &task[j + 1]);
}
}
}
printArray(task, newtask,qarray);
return 0;
}
Короче, я полностью застрял