답안 #961300

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
961300 2024-04-11T19:48:53 Z Prieved1 가장 긴 여행 (IOI23_longesttrip) C++17
5 / 100
8 ms 960 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 ii = 1;ii<N;ii++) {
    if(rand()%2 and t[0].size()) {
      reverse(t[0].begin(), t[0].end());
    }
    if(rand()%2 and t[1].size()) {
      reverse(t[1].begin(), t[1].end());
    }

    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 Correct 2 ms 600 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 344 KB Output is correct
2 Correct 6 ms 344 KB Output is correct
3 Correct 6 ms 344 KB Output is correct
4 Correct 6 ms 344 KB Output is correct
5 Correct 5 ms 856 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 344 KB Output is correct
2 Correct 6 ms 600 KB Output is correct
3 Correct 6 ms 600 KB Output is correct
4 Correct 7 ms 856 KB Output is correct
5 Correct 7 ms 856 KB Output is correct
6 Incorrect 0 ms 344 KB Incorrect
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 344 KB Output is correct
2 Correct 7 ms 500 KB Output is correct
3 Correct 5 ms 344 KB Output is correct
4 Correct 5 ms 344 KB Output is correct
5 Correct 5 ms 344 KB Output is correct
6 Correct 8 ms 344 KB Output is correct
7 Correct 8 ms 344 KB Output is correct
8 Correct 7 ms 344 KB Output is correct
9 Correct 7 ms 460 KB Output is correct
10 Correct 7 ms 864 KB Output is correct
11 Correct 6 ms 736 KB Output is correct
12 Correct 5 ms 344 KB Output is correct
13 Correct 5 ms 856 KB Output is correct
14 Correct 7 ms 344 KB Output is correct
15 Correct 8 ms 344 KB Output is correct
16 Incorrect 1 ms 344 KB Incorrect
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 344 KB Output is correct
2 Correct 6 ms 344 KB Output is correct
3 Correct 5 ms 344 KB Output is correct
4 Correct 6 ms 604 KB Output is correct
5 Correct 7 ms 960 KB Output is correct
6 Incorrect 1 ms 344 KB Incorrect
7 Halted 0 ms 0 KB -