還有加快速度的空間嗎? (ZOJ 原題給的是10s,此題為 1s)
請指點指點
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
#define MAX 32000
struct Data{ int x[MAX+1]; };
Data V;
//=========================================
int main(){
int u,n,m,a,b,c;
char t;
cin>>u;
while(u--){
scanf("%d %d\n",&n,&m);
V.x[0]=0;
for(int i=1; i<n; i++){
cin>>a; V.x[i]=a;
}
cin>>a; //讀取\n
Data T=V;
sort(T.x, T.x+n);
for(int u=0; u<m; u++){
cin>>t;
if(t=='Q'){
scanf("%d %d %d\n",&a,&b,&c);
printf("%d\n",T.x[a+c-1]);
}
else if(t=='C'){
cin>>a>>b;
V.x[a]=b;
T=V;
sort(T.x, T.x+n); //重新排序
}
}
}
}
還有加快速度的空間嗎? (ZOJ 原題給的是10s,此題為 1s)
請指點指點
#include
#include
#include
using namespace std;
#define MAX 32000
struct Data{ int x[MAX+1]; };
Data V;
//=========================================
int main(){
int u,n,m,a,b,c;
char t;
cin>>u;
while(u--){
scanf("%d %d\n",&n,&m);
V.x[0]=0;
for(int i=1; i<n; i++){
cin>>a; V.x[i]=a;
}
cin>>a; //讀取\n
Data T=V;
sort(T.x, T.x+n);
for(int u=0; u<m; u++){
cin>>t;
if(t=='Q'){
scanf("%d %d %d\n",&a,&b,&c);
printf("%d\n",T.x[a+c-1]);
}
else if(t=='C'){
cin>>a>>b;
V.x[a]=b;
T=V;
sort(T.x, T.x+n); //重新排序
}
}
}
}
修改程式(部分排序):
#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std;
#define MAX 32000
struct Data{
int x[MAX+1];
};
Data V,T;
//=========================================
int main(){
int u,n,m;
char t;
int a,b,c;
cin>>u;
while(u--){
scanf("%d %d\n",&n,&m);
V.x[0]=0;
for(int i=1; i<n; i++){
cin>>a; V.x[i]=a;
}
cin>>a; //讀取\n
for(int u=0; u<m; u++){
cin>>t;
if(t=='Q'){
scanf("%d %d %d\n",&a,&b,&c);
T=V;
sort(T.x+a, T.x+b); //小部分排序
printf("%d\n",T.x[a+c-1]);
}
else if(t=='C'){
scanf("%d %d\n",&a,&b);
V.x[a]=b;
}
}
}
}