Я сейчас занимаюсь программированием, пытаясь отсортировать двумерный массив по его первому «столбцу».
Я читаю входные данные из файла:
100 5
8 80
5 20
9 40
3 10
6 30
Этомой код:
#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
bool helper(vector<long> k, vector<long> l)
{
return (k[0] < l[0]);
}
int main()
{
ifstream fi("milk.in");
ofstream fo("milk.out");
long price = 0, n, m, i, p, a;
vector< vector<long> > farmers;
vector<long> farmer(2,0);
fi >> n >> m;
for (i=0; i<n; ++i)
{
fi >> p >> a;
farmer[0] = p;
farmer[1] = a;
farmers.push_back(farmer);
}
sort(farmers.begin(),farmers.end(),helper);
for (i=0; i<m; ++i)
{
cout << farmers[i][0] << " " << farmers[i][1] << endl;
}
return 0;
}
Как видите, я пытаюсь отсортировать ввод по его первому столбцу (в данный момент мне не важна первая строка).
Однако, это результат:
3 10
5 20
6 30
6 30
6 30
Это ожидаемый результат:
3 10
5 20
6 30
8 80
9 40
Я не могу понять это.