Submission #1030243

# Submission time Handle Problem Language Result Execution time Memory
1030243 2024-07-22T00:29:22 Z Agreb Longest Trip (IOI23_longesttrip) C++17
5 / 100
18 ms 600 KB
#include <bits/stdc++.h>
#include "longesttrip.h"
using namespace std;

vector <int> longest_trip(int N, int D){
    vector <int> path, clique, used(N);
    for (int i = 0; i <= 2; i++){
        for (int j = 0; j < i; j++){
            if (are_connected({i}, {j})){
                path = {i, j};
                used[i] = used[j] = 1;
                break;
            }
        }
        if (!path.empty()) break;
    }
    
    pair<int, int> non_edge{-1, -1};
    for (int v = 0; v < N; v++){
        if (used[v]) continue;
        int P = path.size();
        int st = path[0], fin = path[P-1];

        if (non_edge.second != -1 && are_connected({st}, {fin})){
            vector <int> check{non_edge.first, non_edge.second};
            for (int u : check){
                if (are_connected({u}, {v})){   
                    int i = -1;
                    for (int ii = 0; ii < P; ii++)
                        if (path[i] == u) i = ii;
                             
                    vector <int> npath;
                    for (int j = 0; j < P; j++) 
                        npath.push_back(path[(j+i+1)%P]);
                    npath.push_back(v);
                    path = npath;
                    break;
                }
            }
            continue;
        }

        if (!are_connected(path, {v})){
            clique.push_back(v);
            continue;
        }

        if (are_connected({st}, {v})){
            reverse(path.begin(), path.end());
            path.push_back(v);
            continue;
        }
        else if (non_edge.second == -1) non_edge = {st, v};        

        if (are_connected({fin}, {v})){
            path.push_back(v);
            continue;
        }

        for (int i = 1; i < P-1; i++){
            if (are_connected({path[i]}, {v})){   
                vector <int> npath;
                for (int j = 0; j < P; j++) 
                    npath.push_back(path[(j+i+1)%P]);
                npath.push_back(v);
                path = npath;
                break;
            }
        }        
    }
    assert(path.size() + clique.size() == N);
    if (path.size() >= clique.size()) return path;
    else return clique;
}

Compilation message

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from longesttrip.cpp:1:
longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:71:40: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   71 |     assert(path.size() + clique.size() == N);
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 3 ms 344 KB Incorrect
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 344 KB Output is correct
2 Correct 11 ms 344 KB Output is correct
3 Correct 10 ms 344 KB Output is correct
4 Correct 13 ms 344 KB Output is correct
5 Correct 18 ms 600 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 340 KB Output is correct
2 Correct 9 ms 344 KB Output is correct
3 Correct 16 ms 344 KB Output is correct
4 Correct 11 ms 344 KB Output is correct
5 Correct 18 ms 344 KB Output is correct
6 Correct 7 ms 344 KB Output is correct
7 Incorrect 2 ms 344 KB Incorrect
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 344 KB Output is correct
2 Correct 8 ms 344 KB Output is correct
3 Correct 12 ms 344 KB Output is correct
4 Correct 17 ms 344 KB Output is correct
5 Correct 15 ms 344 KB Output is correct
6 Correct 8 ms 344 KB Output is correct
7 Incorrect 2 ms 344 KB Incorrect
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 344 KB Output is correct
2 Correct 9 ms 344 KB Output is correct
3 Correct 10 ms 344 KB Output is correct
4 Correct 13 ms 344 KB Output is correct
5 Partially correct 17 ms 344 KB Output is partially correct
6 Correct 8 ms 344 KB Output is correct
7 Incorrect 2 ms 344 KB Incorrect
8 Halted 0 ms 0 KB -