Cod sursa(job #1383621)

Utilizator hrazvanHarsan Razvan hrazvan Data 10 martie 2015 14:37:33
Problema Bilute Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#define MAXN 30000
#define INF 2000000000
int l[MAXN + 1], c[MAXN + 1];

int main(){
  FILE *in = fopen("bilute.in", "r");
  int n, i;
  long long sum = 0;
  fscanf(in, "%d", &n);
  for(i = 1; i <= n; i++){
    fscanf(in, "%d%d", &c[i], &l[i]);
    if(i > 1)
      sum += 1LL * l[i] * c[i] + 1LL * (i - 1) * c[i];
    c[i] += c[i - 1];
  }
  fclose(in);
  long long rez = sum;
  int nt = 1;
  for(i = 2; i <= n; i++){
    sum += 1LL * l[i - 1] * (c[i - 1] - c[i - 2]);
    sum -= 1LL * l[i] * (c[i] - c[i - 1]);
    sum += c[i - 1];
    sum -= c[n] - c[i - 1];
    if(sum < rez){
      rez = sum;
      nt = i;
    }
  }
  FILE *out = fopen("bilute.out", "w");
  fprintf(out, "%d %lld", nt, rez);
  fclose(out);
  return 0;
}