Submission #1291429

#TimeUsernameProblemLanguageResultExecution timeMemory
1291429nishuTeleporters (IOI08_teleporters)C++17
0 / 100
1100 ms128516 KiB
#include <iostream> #include <vector> #include <set> #include <algorithm> using namespace std; // Assume segment from 0 to L, with N initial teleporters, M new to add int main() { int N, M, L, dist; cin >> N >> M >> L >> dist; set<int> endpoints; vector<pair<int,int>> teleporters; // Read the existing teleporters' endpoints for (int i = 0; i < N; ++i) { int a, b; cin >> a >> b; teleporters.push_back({a, b}); endpoints.insert(a); endpoints.insert(b); } // Track points already marked as teleport endpoints set<int> used = endpoints; vector<bool> visited(L+1, false); // Simulate walk and add new teleporters greedily int position = 0; int added = 0; while (added < M) { // Look for the furthest unvisited endpoint at least 'dist' behind int tele_end = -1; for (int back = position - dist; back >= 0; --back) { if (!visited[back] && !used.count(back)) { tele_end = back; break; } } if (tele_end == -1) break; // No valid unvisited found // Place teleporter between current position and tele_end teleporters.push_back({position, tele_end}); used.insert(tele_end); used.insert(position); visited[tele_end] = true; visited[position] = true; added++; // Move forward for next placement // For simplicity, let's assume next position is the next unvisited spot for (int i = position+1; i <= L; ++i) { if (!visited[i] && !used.count(i)) { position = i; break; } } } // Each added teleporter gives +2 points forcibly int base_points = N; int total_points = base_points + 2 * added; cout << "Total points: " << total_points << endl; cout << "Teleporters placed (existing + new):" << endl; for (auto &p : teleporters) cout << p.first << " " << p.second << endl; return 0; }
#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...
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...