poj 2823 原来scanf 真的比 cin牛掰

来源:互联网 发布:部门预算软件 编辑:程序博客网 时间:2024/05/22 17:37

超时的原因果然是cin

#include <iostream>#include <queue>#include <algorithm>#include <cstdio>using namespace std ;#define _cdebbugint n ;int k ;int arrays[100000] ;int mini[100000] ;int maxm[100000] ;struct cmp1 {bool operator()(const int a1,const int a2){return arrays[a1] > arrays[a2] ;}};struct cmp2{bool operator()(const int a1,const int a2){return arrays[a1] < arrays[a2] ;}};void minval(int *arrays ,int n,int k){int cnt1 = 0 ;int cnt2 = 0 ;    priority_queue<int,vector<int>,cmp1> Q1 ;priority_queue<int,vector<int>,cmp2> Q2 ;for (int j = 0 ; j < k ; ++j){Q1.push(j) ;Q2.push(j) ;}mini[cnt1++] = arrays[Q1.top()] ;maxm[cnt2++] = arrays[Q2.top()] ;for (int i = k ; i < n;  ++i){Q1.push(i) ;Q2.push(i) ;while(i - Q1.top() >= k)Q1.pop();mini[cnt1++] = arrays[Q1.top()] ;while(i - Q2.top() >= k)Q2.pop();maxm[cnt2++] = arrays[Q2.top()] ;}//打印输出数据for (int ii = 0 ; ii < n - k + 1 ; ++ii){//cout << mini[ii] <<" " ;printf("%d ",mini[ii]) ;}printf("\n") ;for (int jj = 0 ; jj < n - k + 1; ++jj){//cout << maxm[jj] <<" ";printf("%d ",maxm[jj]) ;}printf("\n") ;}int main(){//初始化数据#ifdef _cdebbugfreopen("F:\\input.txt","r",stdin );#endif//输入数据//cin >> n >> k ;scanf("%d%d",&n,&k) ;if (k > n){k = n ;}for (int i = 0 ; i < n ; ++i){//cin >> arrays[i] ;scanf("%d",&arrays[i]) ;}//调用函数计算minval(arrays,n,k) ;#ifdef _cdebbugfclose(stdin); #endif///结束return 0 ;}


 

原创粉丝点击