Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
 User ID: Password:
Register

## 同样的code, c++1625MS， g++3625ms

Posted by jerryjiang at 2011-06-25 13:41:02 on Problem 2828
```没用stl，请问怎么回事？ 谢了！

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <deque>
#include <string>
#include <cmath>
#include <iomanip>
#include <limits>
#include <algorithm>
#include <ctime>
using namespace std;

const int MAXN = 200001;

int post[MAXN];
int value[MAXN];

struct Node {
Node() : value(-1){};
int left, right, num, value;
};

Node array[3 * MAXN];

int result[MAXN];

void BuildTree(int v, int l, int r) {
array[v].left = l;
array[v].right = r;
array[v].num = r - l + 1;
array[v].value = -1;

if (l >= r) return;

int mid = (l + r) / 2;

BuildTree(2 * v, l , mid);
BuildTree(2 * v + 1, mid + 1, r);
}

void Insert(int v, int i, int pos)
{
array[v].num--;

if (array[v].left == array[v].right) {
array[v].value = value[i];
result[array[v].left] = value[i];
return;
}

if (array[2 * v].num > pos) {
Insert(2 * v, i, pos);
} else {
Insert(2 * v + 1, i, pos - array[2 * v].num);
}
}

int main() {
//	freopen("input","r",stdin);

int N;
while (cin >> N) {
for (int i = 1; i <= N; i++) {
scanf("%d %d", &post[i], &value[i]);
}

BuildTree(1, 1, N);

for (int i = N; i >= 1; i--) {
Insert(1, i, post[i]);
}

for (int i = 1; i <= N; i++) {
if (i != N) {
printf("%d ", result[i]);
} else {
printf("%d", result[i]);
}
}
printf("%c", '\n');

}
return 0;
}```

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator