Pagini recente » Cod sursa (job #1902385) | Cod sursa (job #2636002) | Cod sursa (job #2888456) | Cod sursa (job #357254) | Cod sursa (job #254696)
Cod sursa(job #254696)
#include<stdio.h>
#define INF 1<<30
#include<string.h>
#include<algorithm>
using namespace std;
long long q,l,s[251111],S,xx,y,x,p,n,m,i,j,t,sol,v[251111];
long long suma(long long x,long long y){
long long rez;
rez=s[y] - s[x-1];
return rez;
}
long long calc(long long a,long long b){
long long aux,rez = 0,mut = a;
if(b > a){
aux = a;
a = b;
b = aux;
}
rez = (a - b) * v[mut];
return rez;
}
int main(){
FILE *f=fopen("cuburi2.in","r");
FILE *g=fopen("cuburi2.out","w");
fscanf(f,"%lld %lld",&n,&m);
for(i=1; i<=n; i++){
fscanf(f,"%lld",&v[i]);
s[i]=s[i-1] + v[i];
S+=v[i];
}
for(i=1;i<=m;i++){
fscanf(f,"%lld %lld",&x,&y);
sol = INF;
q=0;
//daca punem in x;
for(j=x;j<=y;j++){
q+=calc(j,x);
}
if(q < sol){
sol=q;
p=x;
}
for(l=x+1;l<=y;l++){
q+=suma(x,l-1);
q-=suma(l,y);
if(q < sol){
sol=q;
p=l;
}
}
fprintf(g,"%lld %lld\n",p,sol);
}
fclose(f);
fclose(g);
return 0;
}