Pagini recente » Cod sursa (job #2368830) | Cod sursa (job #2526104) | Cod sursa (job #2909528) | Cod sursa (job #1914688) | Cod sursa (job #1549193)
#include <cstdio>
#define DIM 32000
using namespace std;
int N, P, E[DIM], L[DIM];
long long A[DIM], B[DIM], M;
long long D[DIM], C[DIM], S;
class InputReader {
public:
InputReader() {}
InputReader(const char *file_name) {
input_file = fopen(file_name, "r");
cursor = 0;
fread(buffer, SIZE, 1, input_file);
}
inline InputReader &operator >>(int &n) {
while(buffer[cursor] < '0' || buffer[cursor] > '9') {
advance();
}
n = 0;
while('0' <= buffer[cursor] && buffer[cursor] <= '9') {
n = n * 10 + buffer[cursor] - '0';
advance();
}
return *this;
}
private:
FILE *input_file;
static const int SIZE = 1 << 17;
int cursor;
char buffer[SIZE];
inline void advance() {
++ cursor;
if(cursor == SIZE) {
cursor = 0;
fread(buffer, SIZE, 1, input_file);
}
}
};
int main () {
InputReader fin ("bilute.in");
freopen ("bilute.out","w", stdout);
fin >> N;
for (int i = 1; i <= N; i ++) {
fin >> E[i] >> L[i];
S += E[i] * L[i];
}
for (int i = 1; i <= N; i ++) {
A[i] = A[i-1] + E[i];
B[i] = B[i-1] + A[i];
}
for (int i = N; i >= 1; i --) {
C[i] = C[i+1] + E[i];
D[i] = D[i+1] + C[i];
}
M = 1000000000000000000LL;
for (int i = 1; i <= N; i ++) {
if (M > S - E[i] * L[i] + B[i-1] + D[i+1]) {
M = S - E[i] * L[i] + B[i-1] + D[i+1];
P = i;
}
}
printf ("%d %lld\n", P, M);
return 0;
}