Pagini recente » Cod sursa (job #2170468) | Cod sursa (job #302516) | Cod sursa (job #2813729) | Cod sursa (job #1465752) | Cod sursa (job #1256007)
#include <iostream>
#include <fstream>
using namespace std;
//#define N 25001;
ifstream f("culori2.in");
ofstream g("culori2.out");
long a[250001], c[250001], b[250001], s[250001];
long n, m, i, j, nr=0, x, y, min1 = 1000001;
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
f>>a[i];
for (i=1;i<=n;i++) {
s[i] = s[i-1] + a[i];
b[i] = b[i-1] + s[i-1];
c[i] = c[i-1] + (i-1) * b[i];
}
int suma, poz;
for (i=1;i<=m;i++) {
f>>x>>y;
min1=c[y] - (x - 1) * (s[y] - s[x-1]) - c[x];
for (j=x+1;j<=y;j++) {
suma = c[j] - (x-1) * (s[j] - s[x-1]) - c[x] + b[y] - (s[y] - s[j-1]) * (j-1) - b[j];
if (min1 > suma) {
min1 = suma;
poz=j;
}
}
g<<poz<<"\t"<<min1<<endl;
}
/*Calculare TIMP POZITIE: INTERVAL 1-5, TURN 3:
1 3 7 2 5
2*1 + 1*3 + 1*2 + 5*2 = 17
FORMULA: h[i] = h[i-1] + (i-j) * b[j] - b[i]
*/
return 0;
}