//Probelm=
//Algorithm=
/*
Input-1
Output-1
*/
#include<fstream>
#include<iostream>
using namespace std;
//==========输入输出流的定义==========
ifstream fin("input.txt");
ofstream fout("output.txt");
//==========数据的定义============
int Differ[1001]; //差分数组
int NumberOfData; //我想不用说你也知道
int NumberOfOper; //我想不用说你也知道
//==========差分初始化函数==========
void Differ_Init(int Data,int Postation){
if(Postation==1) Differ[Postation]=Data;
else Differ[Postation]=Differ[Postation-1]-Data;
}
//==========差分动作函数==========
void Differ_Operation(int Function,int Head,int Tail,int Addr){
if(Function==1){ //求差分和
int Answer=0,Xddr=0;
for(int i=1;i<=Tail;i++){
Xddr+=Differ[i];
Answer+=Xddr;
}
fout<<Answer<<endl;
}else if(Function==2){ //改差分值
Differ[Head]+=Addr;
Differ[Tail+1]-=Addr;
}
}
//==========为GDB写的函数==========
void Print_Differ(int tail){
int value=0;
for(int i=1;i<=tail;i++){
value+=Differ[i];
cout<<value<<" ";
}
}
//==========主函数==========
int main(){
//=====输入数据=====
int Value;
fin>>NumberOfData>>NumberOfOper;
for(int i=1;i<=NumberOfData;i++){
fin>>Value;
Differ_Init(Value,i);
}
//=====差分动作+输出数据=====
int Addr,Function,Head,Tail;
for(int i=1;i<=NumberOfOper;i++){
fin>>Function;
Addr=0;
if(Function==1) fin>>Head>>Tail;
else if(Function==2) fin>>Head>>Tail>>Addr;
Differ_Operation(Function,Head,Tail,Addr);
}
return 0;
}
输入
5 1
5 4 3 2 1
1 1 5
输出
10
在下哪里错了不知道,请高手多多指教!