北邮机试-字符串操作

北邮机试-字符串操作

#include<bits/stdc++.h>
using namespace std;
const int maxn = 105;
void swap(int buf[],int l,int r){
	int left = l;
	int right = r;
	while(left<right){
		int temp;
		temp = buf[left];
		buf[left] = buf[right];
		buf[right] = temp;
		left++;
		right--;
	}
}
int main(){
	int buf[maxn];
	int n,m;
	int p,l,r,len,x;
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&buf[i]);
	}
	while(m--){
		scanf("%d",&p);
		if(p==1){
			scanf("%d %d",&l,&r);
			swap(buf,l,r);
		}
		else if(p==2){
			scanf("%d %d %d",&l,&r,&len);
			for(int i=l,j=r;i<=l+2,j<=r+2;i++,j++){
				swap(buf,i,j);
			}
		}
		else if(p==3){
			scanf("%d %d %d",&l,&r,&x);
				for(int i=l;i<=r;i++){
					buf[i] = x;		
			}
		}
		else if(p==4){
			scanf("%d %d",&l,&r);
			sort(buf+l,buf+r+1);
		}
		else if(p==5){
			scanf("%d %d",&l,&r);
			int sum = 0;
			for(int i=l;i<=r;i++){
				sum = sum+buf[i];
			}
			printf("%d\n",sum);
		}
	}
	return 0;
}