답안 #649861

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
649861 2022-10-11T13:17:25 Z boris_mihov Secret Permutation (RMI19_permutation) C++17
0 / 100
1 ms 208 KB
#include "permutation.h"
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <numeric>
#include <cassert>
#include <vector>
#include <cmath>
#include <set>

const int MAXN = 256 + 10;
const int INF  = 1e9;

// int p[MAXN];
// int query(std::vector <int> v)
// {
//     int sum = 0;
//     for (int i = 0 ; i < v.size() - 1 ; ++i)
//     {
//         sum += abs(p[v[i + 1]] - p[v[i]]);
//     }

//     return sum;
// }

// void answer(std::vector <int> v)
// {
//     int cnt = 1;
//     bool res = true;
//     for (const int &i : v)
//     {
//         std::cout << i << ' ';
//         res &= (i == p[cnt++]);
//     }

//     std::cout << '\n';
//     if (res) std::cout << "OK\n";
//     else std::cout << "WA\n";
//     exit(0);
// }

// inline void printVector(const std::vector <int> &v)
// {
//     for (const int &i : v)
//     {
//         std::cout << i << ' ';
//     }

//     std::cout << '\n';
// }

std::vector <int> perm;
std::vector <int> ans;
void solve(int n) 
{
    perm.resize(n);
    std::iota(perm.begin(), perm.end(), 1);
    for (int i = 2 ; i <= n-1 ; ++i)
    {
        perm.erase(perm.begin() + i);
        int minPos = -1, value = INF;
        for (int j = 0 ; j <= i ; ++j)
        {
            perm.insert(perm.begin() + j, i+1);
            int curr = query(perm);
            if (curr < value)
            {
                minPos = j;
                value = curr; 
            }

            perm.erase(perm.begin() + j);
        }

        perm.insert(perm.begin() + minPos, i+1);
    }

    ans.resize(n);
    for (int i = 1 ; i <= n ; ++i)
    {
        ans[perm[i-1] - 1] = i;
    }

    answer(ans);
}

// int n;
// int main()
// {
//     std::cin >> n;
//     for (int i = 1 ; i <= n ; ++i)
//     {
//         std::cin >> p[i];
//     }

//     solve(n);
//     return 0;
// }

Compilation message

stub.cpp: In function 'int query(int*)':
stub.cpp:15:9: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |   fscanf(stdin, "%d", &x);
      |   ~~~~~~^~~~~~~~~~~~~~~~~
stub.cpp: In function 'int main(int, char**)':
stub.cpp:48:9: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   48 |   fscanf(stdin, "%d", &N);
      |   ~~~~~~^~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 208 KB Partially correct
2 Incorrect 1 ms 208 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 208 KB Partially correct
2 Incorrect 1 ms 208 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 208 KB Partially correct
2 Incorrect 1 ms 208 KB Output isn't correct
3 Halted 0 ms 0 KB -