Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cmath>
- using namespace std;
- struct Target {
- int id;
- int posX, posY;
- bool visited;
- int takesTime;
- int openFrom;
- int openTo;
- int needsPackage;
- Target(int i, int x, int y, int of, int ot, int n, int t){
- id = i;
- posX = x;
- posY = y;
- openFrom = of;
- openTo = ot;
- needsPackage = n;
- takesTime = t;
- visited = false;
- }
- };
- vector<Target*> map[100][100];
- Target* targets[10000];
- bool visited[100][100];
- int startPosX, startPosY;
- int distance(int x1, int y1, int x2, int y2){
- return (abs(x2-x1) + abs(y2-y1));
- }
- bool compare(Target* a, Target* b){
- return distance(a->posX, b->posX, startPosX, startPosY) < distance(b->posX, b->posX, startPosX, startPosY);
- }
- int getClosesOnTime(){
- return 1;
- }
- int main(){
- int klientow, maxPojemnosc;
- cin >> klientow >> maxPojemnosc;
- cin >> startPosX >> startPosY;
- vector<Target*> queue;
- int distSum = 0;
- for(int x=0; x<klientow; x++){
- int id, posX, posY, openFrom, openTo, needsPackage, needsTime;
- cin >> id >> posX >> posY >> openFrom >> openTo >> needsPackage >> needsTime;
- targets[id-1] = new Target(id, posX, posY, openFrom, openTo, needsPackage, needsTime);
- queue.push_back(targets[id-1]);
- distSum += distance(posX, posY, startPosX, startPosY);
- }
- cout << queue.size() << " " << distSum*2 << endl;
- for(int x=0; x<queue.size(); x++){
- //cout << x << endl;
- cout << queue[x]->id << endl;
- }
- //while(!queue.empty()){
- //cout << queue.front()->id << endl;
- // queue.erase(queue.begin());
- //}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement