Submission #1089729

#TimeUsernameProblemLanguageResultExecution timeMemory
1089729vjudge1Xor Sort (eJOI20_xorsort)C++17
60 / 100
9 ms1236 KiB
/* https://oj.uz/problem/view/eJOI20_xorsort?locale=en: WA */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <vector> #include <limits.h> unsigned int N, S, A[1000]; std::vector<std::pair<unsigned int, unsigned int>> operations; void destroysort(void) { unsigned int i, j, mask; for (j = N; j > 1; --j) { if (j == 0) return; mask = 0; for (i = 0; i < j; ++i) mask |= A[i]; if (mask == 0) return; printf("%u\n", mask); mask = 1 << (sizeof(mask) * CHAR_BIT - __builtin_clz(mask) - 1); printf("%u\n", mask); for (i = 0; i < j - 1; ++i) { if (A[i] & mask) { if (!(A[i+1] & mask)) { A[i+1] ^= A[i]; operations.push_back({i+1, i}); } A[i] ^= A[i+1]; operations.push_back({i, i+1}); } } } } void cursedbubblesort(void) { unsigned int i, j, k; for (j = N; j > 1; --j) { k = 0; for (i = 1; i < j; ++i) if (A[i] > A[k]) k = i; if (k == j-1) { operations.push_back({j-2, j-1}); } else { for (i = k; i < j - 1; ++i) operations.push_back({i+1, i}); for (i = k; i > 1; --i) operations.push_back({i-2, i-1}); for (i = 0; i < j - 1; ++i) operations.push_back({i, i+1}); memmove(&A[k], &A[k+1], sizeof(*A)*(j-k-1)); } } } int main(void) { (void) scanf("%u %u", &N, &S); for (unsigned int i = 0; i < N; ++i) (void) scanf(" %u", &A[i]); if (S == 1) { for (unsigned int i = 0; i < N - 1; ++i) operations.push_back({i, i+1}); cursedbubblesort(); } else { destroysort(); } printf("%u\n", operations.size()); for (auto operation : operations) printf("%u %u\n", operation.first + 1, operation.second + 1); return EXIT_SUCCESS; }

Compilation message (stderr)

xorsort.cpp: In function 'int main()':
xorsort.cpp:70:12: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'std::vector<std::pair<unsigned int, unsigned int> >::size_type' {aka 'long unsigned int'} [-Wformat=]
   70 |   printf("%u\n", operations.size());
      |           ~^     ~~~~~~~~~~~~~~~~~
      |            |                    |
      |            unsigned int         std::vector<std::pair<unsigned int, unsigned int> >::size_type {aka long unsigned int}
      |           %lu
xorsort.cpp:60:15: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   60 |   (void) scanf("%u %u", &N, &S);
      |          ~~~~~^~~~~~~~~~~~~~~~~
xorsort.cpp:62:17: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |     (void) scanf(" %u", &A[i]);
      |            ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...