Pagini recente » Cod sursa (job #3039518) | Cod sursa (job #2614290) | Cod sursa (job #1654188) | Cod sursa (job #1530394) | Cod sursa (job #1500164)
#include <iostream>
#include <fstream>
#include <cstring>
#define INF 1<<30
#define NMAX 250010
using namespace std;
ifstream in("cuburi2.in");
ofstream out("cuburi2.out");
int N,M;
int V[NMAX];
int best[NMAX];
int S[NMAX];
int abs(int x){
if(x>0)
return x;
return -x;
}
int main()
{
in>>N>>M;
int i,x,y;
//S[i]=suma numerele de la v[1] pana la v[i]
S[0]=0;
for(i=1;i<=N;i++)
{
in>>V[i];
S[i]=S[i-1]+V[i];
}
while(M--){
in>>x>>y;
best[x]=0;
for(i=x;i<=y;i++)
best[x]+=( V[i] * abs( x-i ) );
for(i=x+1;i<=y;i++){
best[i] = best[i-1] - ( S[y] - S[i-1] ) + ( S[i-1] - S[x-1] );
}
int min=INF,poz;
for(i=x;i<=y;i++)
if(best[i]<=min)
{
min=best[i];
poz=i;
}
out<<poz<<" "<<min<<"\n";
}
return 0;
}