Pagini recente » Cod sursa (job #1062894) | Cod sursa (job #100033) | Cod sursa (job #629129) | Cod sursa (job #3222223) | Cod sursa (job #2859373)
#include <iostream>
#include <stdio.h>
using namespace std;
#define MAXN 30000
#define INF 45301500000
struct in{
int c, l;
};
struct partsum{
long long c, all;
};
in v[MAXN + 1];
partsum sp[MAXN + 1];
int main()
{
FILE *fin, *fout;
int n, i, imin;
long long min, cons;
fin = fopen("bilute.in", "r");
fscanf(fin, "%d", &n);
cons = 0;
for(i = 1; i <= n; i++){
fscanf(fin, "%d%d", &v[i].c, &v[i].l);
cons = cons + v[i].c * v[i].l;
sp[i].c = sp[i - 1].c + v[i].c;
sp[i].all = sp[i - 1].all + v[i].c * i;
}
fclose(fin);
min = INF + 1;
for(i = 1; i <= n; i++){
if((cons + (i * sp[i].c - sp[i].all) + ((sp[n].all - sp[i].all) - i * (sp[n].c - sp[i].c)) - v[i].c * v[i].l) < min){
min = cons + (i * sp[i].c - sp[i].all) + ((sp[n].all - sp[i].all) - i * (sp[n].c - sp[i].c)) - v[i].c * v[i].l;
imin = i;
}
}
fout = fopen("bilute.out", "w");
fprintf(fout, "%d %lld", imin, min);
fclose(fout);
return 0;
}