답안 #961313

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
961313 2024-04-11T19:58:33 Z Prieved1 가장 긴 여행 (IOI23_longesttrip) C++17
0 / 100
30 ms 7424 KB
#include "longesttrip.h"
#include <bits/stdc++.h>
using namespace std;
int cnt=0;
int n;
map<int, map<int,int>> mp;
bool query1(int a, int b) {
  if(mp[a][b]!=0)return mp[a][b]-1;
  int c=are_connected({a}, {b});
  mp[a][b]=c+1;
  mp[b][a]=c+1;
  cnt++;
  return c;
}
bool query2(int a, int b) {
 for(int j  = 0;j<n;j++) {
  if(a==j or j==b)continue;
  if(mp[a][j]==1 and mp[j][b]==1) {
    mp[a][b]=2;
    mp[b][a]=2;
    return 1;
  }
 }
 return query1(a,b);
}
vector<int> longest_trip(int N, int D)
{
  n=N;
  cnt=0;
  mp.clear();
  srand(time(NULL));
  vector<int> id(N);
  iota(id.begin(), id.end(), 0);
  random_shuffle(id.begin(), id.end());
  vector<int> t[2];
  t[0].push_back(id[0]);
  for(int i = 10;i<n;i++) {
    int j  = rand()%i;
    query2(id[i], id[j]);
  }
  for(int ii = 1;ii<N;ii++) {
    int i=id[ii];
    if(t[1].size() > t[0].size())swap(t[0], t[1]);
    if(t[1].size()) {
      if(rand()%2)swap(t[0], t[1]);
    }
    int c=query2(t[0].back(), i);
    if(!c) {
      t[1].push_back(i);
    }
    else {
      t[0].push_back(i);
      if(t[1].size()) {
        c=query2(t[1].back(), i);
        if(c) {
          while(t[1].size()) {
            t[0].push_back(t[1].back());
            t[1].pop_back();
          }
        }
      }
    }
  }
  assert(cnt<=384);
  if(t[0].size()<t[1].size())swap(t[0], t[1]);
  return t[0];
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Runtime error 15 ms 7092 KB Execution killed with signal 6
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 344 KB Output is correct
2 Correct 6 ms 344 KB Output is correct
3 Correct 16 ms 556 KB Output is correct
4 Correct 30 ms 1368 KB Output is correct
5 Runtime error 14 ms 6932 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 344 KB Output is correct
2 Correct 5 ms 344 KB Output is correct
3 Correct 16 ms 344 KB Output is correct
4 Correct 26 ms 1112 KB Output is correct
5 Runtime error 14 ms 6768 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 344 KB Output is correct
2 Correct 7 ms 600 KB Output is correct
3 Correct 14 ms 344 KB Output is correct
4 Correct 25 ms 1112 KB Output is correct
5 Runtime error 15 ms 7424 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 344 KB Output is correct
2 Correct 6 ms 344 KB Output is correct
3 Correct 15 ms 600 KB Output is correct
4 Correct 26 ms 1112 KB Output is correct
5 Runtime error 14 ms 7256 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -