범위 조회

2823 단어 알고리즘
범위 조회
묘사 하 다.
수축 에 n 개의 점 이 있 는데 임의의 폐 구간 [a, b] 에 대해 그 안에 떨 어 진 점 수 를 시험 적 으로 계산한다.
입력
첫 번 째 줄 은 두 개의 정수: 점 의 총수 n, 조회 횟수 m 를 포함한다.
두 번 째 줄 은 n 개의 수 를 포함 하고 각 점 의 좌 표를 포함한다.
아래 m 줄 은 각각 두 개의 정 수 를 포함한다. 검색 구간 의 왼쪽, 오른쪽 경계 a 와 b.
출력
매번 조회 할 때마다 출력 은 닫 힌 구간 [a, b] 내 점 의 개수 에 떨 어 집 니 다.
본보기
영어 문 제 를 만나다.
제한 하 다.
0 ≤ n, m ≤ 5×105
매번 조회 구간 [a, b] 에 대해 a ≤ b 가 있 음
각 점 의 좌 표 는 서로 다르다.
각 점 의 좌표, 조회 구간 의 경계 a, b 는 모두 10 ^ 7 의 비 마이너스 정 수 를 초과 하지 않 습 니 다.
시간: 2 sec
메모리: 256 MB
#include
#include
#include 
#include
using namespace std;

int main() {

static vector sum[5];
	
int count = 0;
	char temp1;
	cout << "*********    
"; sum->resize(500); char* pC = sum->data(); cin >> pC; //for (int i = 0; i < 5; i++) { // // cin >> temp1; // sum->push_back(temp1); // count++; //} cout << "********* :
"; int n; cin >> n; int* a = new int[n];// char * b = new char[n];// int temp; vector::iterator it; //it = sum->begin(); vector::iterator del; //del = sum->begin(); vector::iterator m; vector::iterator jian; for (int i = 0; i < n; i++) { cout << "*********
"; cin >> a[i] >> b[i]; // //temp = a[i]; //vector temp2; //vector::iterator temp2; //temp2.push_back(b[i]); //temp2 = b[i]; //sum->insert(temp, temp2); //sum.insert(sum->begin(), 'a'); vector::iterator it; it = sum->begin(); sum->insert(it + a[i], b[i]); //sum->push_back(b[i]);s cout << "*********
"; for (jian = sum->begin(); jian != sum->end()-2; jian++) { // if (sum->size() >= 3) { cout << *jian << *(jian + 1) << *(jian + 2) << "********* ...
"; if (*jian == *(jian + 1)) { if (*(jian + 2) == *(jian + 1)) { del = sum->begin(); sum->erase(jian, jian + 3); cout << "*********
"; /*count = count - 3;*/ jian = sum->begin(); } else { cout << "********
"; } } else { cout << "********
"; } } else if (sum->size() == 0) { cout << "-"; } else { break; } } cout << "*********
"; for ( m = sum->begin(); m != sum->end(); m++) { // /* it = sum[i]; a = sum[i];*/ std::cout << *m; //printf("%c", sum[i]); } cout << endl; } }

좋은 웹페이지 즐겨찾기