Cod sursa(job #2859373)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 1 martie 2022 11:33:42
Problema Bilute Scor 100
Compilator cpp-64 Status done
Runda tagalaibas Marime 1.04 kb
#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;
}