Cod sursa(job #2334930)

Utilizator AnnaLipianuLipianu Ana AnnaLipianu Data 3 februarie 2019 13:06:47
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<cstdio>
using namespace std;
#define MAXN 2001
int pr[MAXN], t[MAXN], v[MAXN];
void myqsort( int begin, int end, int *v) {
  int aux, b = begin, e = end,
    pivot = v[(begin + end) / 2];
  while ( b <= e ) {
    while ( v[b] < pivot ) b++;
    while ( v[e] > pivot ) e--;
    if ( b <= e ) {
      aux = pr[b]; pr[b] = pr[e]; pr[e] = aux;
      aux = t[b]; t[b] = t[e]; t[e] = aux;
      b++; e--;
    }
  }
  if ( begin < e ) myqsort( begin, e ,v);
  if ( b < end ) myqsort( b, end, v);
}
int main(){
  freopen("carnati.in", "r",stdin);
  freopen("carnati.out", "w",stdout);
  int n, c, i, smax, t0, s, j, x;
  scanf("%d%d", &n, &c);
  for(i=1; i<=n; i++)
    scanf("%d %d", &t[i], &pr[i]);
  myqsort(1, n, t);
  smax=0;
  for(i=1; i<=n; i++){
    s=-c;
    for(j=1; j<=n; j++){
      x=0;
      if(pr[j]>=pr[i])
        x=pr[i];
      if(s-c*(t[j]-t[j-1]-1)>0)
        s=s-c*(t[j]-t[j-1])+x;
      else
        s=x-c;

      if(s>smax){
        smax=s;
        //printf("%d\n", i);
      }
    }
  }
  printf( "%d", smax);
  return 0;
}