Counting Haybales
Implementación
Complejidad temporal:
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("haybales.in", "r", stdin);
int bale_num;
int query_num;
cin >> bale_num >> query_num;
vector<int> haybales(bale_num);
for (int i = 0; i < bale_num; i++) { cin >> haybales[i]; }
sort(haybales.begin(), haybales.end());
freopen("haybales.out", "w", stdout);
for (int i = 0; i < query_num; i++) {
int start, end;
cin >> start >> end;
int left =
lower_bound(haybales.begin(), haybales.end(), start) - haybales.begin();
int right =
upper_bound(haybales.begin(), haybales.end(), end) - haybales.begin();
cout << right - left << '\n';
}
}import java.io.*;
import java.util.*;
public class Haybales {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new FileReader("haybales.in"));
StringTokenizer initial = new StringTokenizer(in.readLine());
int baleNum = Integer.parseInt(initial.nextToken());
int queryNum = Integer.parseInt(initial.nextToken());
int haybales[] = new int[baleNum];
StringTokenizer baleST = new StringTokenizer(in.readLine());
for (int i = 0; i < baleNum; i++) {
haybales[i] = Integer.parseInt(baleST.nextToken());
}
Arrays.sort(haybales);
PrintWriter pw = new PrintWriter("haybales.out");
for (int i = 0; i < queryNum; i++) {
StringTokenizer query = new StringTokenizer(in.readLine());
int start = Integer.parseInt(query.nextToken());
int end = Integer.parseInt(query.nextToken());
int left = lowerBound(haybales, start);
int right = upperBound(haybales, end);
pw.println(right - left);
}
pw.close();
}
static int lowerBound(int[] arr, int x) {
int lo = 0;
int hi = arr.length;
while (lo < hi) {
int mid = lo + (hi - lo) / 2;
if (arr[mid] >= x) {
hi = mid;
} else {
lo = mid + 1;
}
}
return lo;
}
static int upperBound(int[] arr, int x) {
int lo = 0;
int hi = arr.length;
while (lo < hi) {
int mid = lo + (hi - lo) / 2;
if (arr[mid] > x) {
hi = mid;
} else {
lo = mid + 1;
}
}
return lo;
}
}from bisect import bisect_left, bisect_right
with open("haybales.in") as read:
bale_num, query_num = [int(i) for i in read.readline().split()]
haybales = sorted(int(i) for i in read.readline().split())
ans = []
for _ in range(query_num):
start, end = [int(i) for i in read.readline().split()]
left = bisect_left(haybales, start)
right = bisect_right(haybales, end)
ans.append(right - left)
print("\n".join(str(a) for a in ans), file=open("haybales.out", "w"))