标签:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <set>
#include <bitset>
#include <ctime>
#include <cassert>
#include <climits>
#include <algorithm>
#define MAXN 5000000
#define RST(N)memset(N, 0, sizeof(N))
using namespace std;
typedef unsigned long long ULL;
int main()
{
bitset <MAXN> bit_map;
bit_map.reset();
//time record
clock_t begin = clock();
//read data from data.in file
FILE *wait_sort_file = fopen("data.in", "r");
assert(wait_sort_file);
ULL Num;
while(~fscanf(wait_sort_file, "%d ", &Num))
{
if(Num < MAXN) bit_map.set(Num, 1);
}
//write data to data.out file
FILE *sorted_file = fopen("data.out", "w");
assert(sorted_file);
for(int i=0; i<MAXN; i++)
{
if(bit_map[i] == 1) fprintf(sorted_file, "%d ", i);
}
//seek the offset of file
int offset = fseek(wait_sort_file, 0, SEEK_SET);
if(offset) perror("fseek fail");
else
{
//read data again
bit_map.reset();
while(~fscanf(wait_sort_file, "%d ", &Num))
{
if(Num >= MAXN) bit_map.set(Num-MAXN, 1);
}
//write again
for(int i=0; i<MAXN; i++)
{
if(bit_map[i] == 1)
fprintf(sorted_file, "%d ", i+MAXN);
}
}
clock_t end = clock();
cout << "cost time: " << (double)(end-begin)/CLOCKS_PER_SEC << endl;
fclose(wait_sort_file);
fclose(sorted_file);
return 0;
}
版权声明:感觉我写的还算不错的的话希望你能够动动你的鼠标和键盘为我点上一个赞或是为我奉献上一个评论,在下感激不尽!_______________________________________________________欢迎转载,希望在你转载的同时,添加原文地址,谢谢配合
标签:
原文地址:http://blog.csdn.net/u011225629/article/details/48109639