All pastes #817577 Raw Edit

jerz

public cpp v1 · immutable
·published 2007-12-15 18:24 UTC
rendered paste body
#include <iostream.h>struct sklep{       int x;       int y;       int a;       int b;       int c; // x i y współrzędne} sklep[1000];main(){      int  t, j, n ,i ,p ,q, p2, q2, l, dodead, deadline, sumaczasu, wchodz_jedz, best_czas, best_shop, best_odl,k, odl,s;      double  pkt_na_min, best_pkt,pkt;        scanf("%d",&t);      for (j=1; j<=t; j++)  {                scanf("%d",&n);      scanf("%d",&deadline);            for (i=0; i<n; i++)      {          scanf("%d", &sklep[i].x);          scanf("%d", &sklep[i].y);          scanf("%d", &sklep[i].a);          scanf("%d", &sklep[i].b);          scanf("%d", &sklep[i].c);                 }                  scanf("%d",&p);      scanf("%d",&q);            p2= p;      q2 = q;            printf("%d\n",j);      dodead = deadline;      sumaczasu = 0;      for (l=0; l<n; l++)  {           best_pkt = 0;     for(i=0; i<n; i++)     {              if (sklep[i].b == 0) continue;              if (sklep[i].a == 0) continue;              pkt = 0;              odl = abs(sklep[i].x - p2) + abs(sklep[i].y - q2);              wchodz_jedz = sklep[i].a - sklep[i].b * (sumaczasu + odl);              if (wchodz_jedz <sklep[i].b) continue;              if (wchodz_jedz >= sklep[i].b)               {                                                              k = wchodz_jedz/sklep[i].b;                              if (k < sklep[i].c)                              pkt = k * sklep[i].b;                              else                              {                                  k = sklep[i].c;                                  pkt = k * sklep[i].b;                              }                         //     printf("%d/(%d + %d)\n",pkt,odl,k);                              pkt_na_min = pkt/(odl + k/3);                              /*if (pkt_na_min == 0)                                 pkt_na_min = 1;*/                                                                          }              pkt = pkt*pkt_na_min*pkt_na_min;              if (pkt > best_pkt)              {                      best_shop = i;                      best_czas = k;                      best_odl = odl;                       best_pkt = pkt;                     }            //  printf("i = %d //odl = %d // wchodz_jedz = %d // pkt = %d\npkt_na_min = %d // k = %d // sklep[best_shop].c = %d\ndodead = %d\n\n",i,odl,wchodz_jedz,pkt,pkt_na_min,k,sklep[i].c,dodead);     }    // printf("--------\n%d + %d + %d + %d > %d\n------------",best_odl,best_czas ,abs(sklep[best_shop].x - p),abs(sklep[best_shop].y - q),dodead);      if (wchodz_jedz <sklep[i].b) continue;     if (best_odl + best_czas + abs(sklep[best_shop].x - p) + abs(sklep[best_shop].y - q) > dodead)       continue;     sumaczasu = sumaczasu + best_odl + best_czas;     dodead = dodead - best_odl - best_czas;     p2 = sklep[best_shop].x;     q2 = sklep[best_shop].y;     sklep[best_shop].a = 0;     printf("%d %d\n", best_shop+1, best_czas);  }                        printf("0 0");      if (j != t)      printf("\n");        }                        }