差分(1题)
- AcWing 2041. 干草堆
AcWing 2041. 干草堆
一维差分。
// Date: Sun Jan 23 21:26:56 2022
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <utility>
#include <functional>
using namespace std;
const int INF = 0x3f3f3f3f, MOD = 1e9 + 7;
const double eps = 1e-8;
const int dir[8][2] = {
{0, 1}, {0, -1},
{1, 0}, {-1, 0},
{1, 1}, {1, -1},
{-1, 1}, {-1, -1},
};
typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> VI;
typedef pair<int, int> PII;
const ull Pr = 131;
#define LN ListNode
#define LNP ListNode*
#define TN TreeNode
#define TNP TreeNode*
#ifdef _DEBUG
struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int val) : val(val), next(nullptr) {}
ListNode(int val, ListNode *next) : val(val), next(next) {}
};
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
#endif
const int N = 1e6 + 10;
ll b[N];
int main(void)
{
#ifdef _DEBUG
freopen("2041.in", "r", stdin);
#endif
std::ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n, k;
while (cin >> n >> k) {
for (int i = 0; i < k; ++i) {
int x, y; cin >> x >> y;
b[x] ++;
b[y + 1]--;
}
for (int i = 1; i <= n; ++i) {
b[i] += b[i - 1];
}
sort(b + 1, b + n + 1);
cout << b[(1 + n) / 2] << endl;
}
return 0;
}