Submission #897862

#TimeUsernameProblemLanguageResultExecution timeMemory
897862batmendbarOvertaking (IOI23_overtaking)C++17
39 / 100
3542 ms696 KiB
#include "overtaking.h" #include<bits/stdc++.h> using namespace std; struct Car { Car(int speed, long long cur_time, int number) : speed{speed}, cur_time{cur_time}, number{number} {} int number; int speed; long long cur_time; bool operator<(const Car &other) const{ if (cur_time != other.cur_time) { return cur_time > other.cur_time; } else { return speed > other.speed; } } }; vector<Car> cars; vector<int> stations; void init(int L, int N, std::vector<long long> T, std::vector<int> W, int X, int M, std::vector<int> S) { for (int i = 0; i < N; i++) { cars.push_back(Car(W[i], T[i], i)); } cars.push_back(Car(X, 0, N)); stations = S; stations.push_back(L); return; } long long arrival_time(long long Y) { cars.back().cur_time = Y; auto cars1 = cars; // for (Car c : cars1) { // cout << c.cur_time << ' ' << c.speed << '\n'; // } for (int i = 0; i < stations.size(); i++) { long long dist; if (i == 0) { continue; } else { dist = stations[i] - stations[i-1]; } sort(cars1.begin(), cars1.end()); vector<Car> temp; long long slowest_time = -1; while(!cars1.empty()) { slowest_time = max(slowest_time, cars1.back().cur_time + dist * cars1.back().speed); cars1.back().cur_time = slowest_time; temp.push_back(cars1.back()); cars1.pop_back(); } cars1 = temp; } for (auto car : cars1) { if (car.number == cars1.size() - 1) { return car.cur_time; } } return 0; }

Compilation message (stderr)

overtaking.cpp: In constructor 'Car::Car(int, long long int, int)':
overtaking.cpp:9:15: warning: 'Car::cur_time' will be initialized after [-Wreorder]
    9 |     long long cur_time;
      |               ^~~~~~~~
overtaking.cpp:7:9: warning:   'int Car::number' [-Wreorder]
    7 |     int number;
      |         ^~~~~~
overtaking.cpp:6:5: warning:   when initialized here [-Wreorder]
    6 |     Car(int speed, long long cur_time, int number) : speed{speed}, cur_time{cur_time}, number{number} {}
      |     ^~~
overtaking.cpp: In function 'long long int arrival_time(long long int)':
overtaking.cpp:43:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for (int i = 0; i < stations.size(); i++) {
      |                     ~~^~~~~~~~~~~~~~~~~
overtaking.cpp:64:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<Car>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |         if (car.number == cars1.size() - 1) {
      |             ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...