Pagini recente » Cod sursa (job #1935479) | Cod sursa (job #2939449) | Cod sursa (job #2746982) | Cod sursa (job #693160) | Cod sursa (job #1425408)
#include <fstream>
#define DIM 260000
using namespace std;
ifstream fin ("cuburi2.in" );
ofstream fout("cuburi2.out");
int N, M, i, j, K, ok, minim, X;
int D1[DIM], D2[DIM], V[DIM], Y;
void SetUp(){
fin >> N >> M;
for(i = 1; i <= N; i ++)
fin >> V[i];
for(i = 1; i <= N; i ++)
D1[i] = D1[i-1] + V[i-1];
for(i = N; i >= 1; i --)
D2[i] = D2[i+1] + V[i+1];
return;
}
int Valoare(int pos, int st, int dr){
return D1[pos] - D1[st] + D2[pos] - D2[dr];
}
void CautBin(int st, int dr){
int p1 = st, p2 = dr;
while(st <= dr){
int mid = st + (dr - st) / 2;
if(Valoare(mid, p1, p2) <= Valoare(mid-1, p1, p2)){
if(Valoare(mid, p1, p2) <= Valoare(mid+1, p1, p2)){
fout << mid << " " << Valoare(mid, p1, p2) << "\n";
return;
}
}
if(Valoare(mid-1, p1, p2) >= Valoare(mid, p1, p2))
st = mid + 1;
else
dr = mid - 1;
}
return;
}
void CodeExpert(){
for(M = M; M > 0; M --){
fin >> X >> Y;
CautBin(X, Y);
}
return;
}
int main(){
SetUp();
CodeExpert();
return 0;
}