Pagini recente » Borderou de evaluare (job #2885265) | Cod sursa (job #254595)
Cod sursa(job #254595)
#include <fstream>
using namespace std;
ifstream fin("cuburi2.in");
ofstream fout("cuburi2.out");
#define NMAX 5000
struct numb
{
unsigned long long b,f;
};
long long A[NMAX],n,m,x,y,minh,pmin;
numb B[NMAX],C[NMAX];
int main()
{
int i,j,z;
fin>>n>>m;
B[0].f=B[n+1].f=0;
for (i=1;i<=n;i++)
{
fin>>A[i];
B[i].f=B[i-1].f+A[i];
C[i].f=C[i-1].f+B[i-1].f;
}
for (i=n;i>=1;i--)
{
B[i].b=B[i+1].b+A[i];
C[i].b=C[i+1].b+B[i+1].b;
}
for (i=1;i<=m;i++)
{
fin>>x>>y;
minh=C[y].f-C[x].f-B[x-1].f*(y-x);
pmin=y;
for (j=x;j<=y;j++)
{
z=(C[j].f-C[x].f-B[x-1].f*(j-x))+(C[j].b-C[y].b-B[y+1].b*(y-j));
if (z<minh) minh=z, pmin=j;
}
fout<<pmin<<' '<<minh<<'\n';
}
fout.close();
return 0;
}