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"); } }