Submission #1228304

#TimeUsernameProblemLanguageResultExecution timeMemory
1228304kl0989eMachine (IOI24_machine)C++20
100 / 100
71 ms724 KiB
#include "machine.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define fi first #define se second #define pb push_back #define vi vector<int> #define vl vector<ll> #define pi pair<int, int> #define pl pair<ll,ll> #define all(x) (x).begin(),(x).end() vi find_permutation(int n) { if (n%2==0) { int num1,num2,num3; bool br=0; for (int i=0; i<=n+2 && (!br); i++) { for (int j=i+1; j<=n+2 && (!br); j++) { for (int m=j+1; m<=n+2; m++) { set<vi> seen; bool ok=1; for (int k=0; k<256; k++) { vi temp; for (int l=0; l<=n+2; l++) { if (l!=i && l!=j && l!=m) { temp.pb(l^k); } } sort(all(temp)); if (seen.find(temp)!=seen.end()) { ok=0; break; } seen.insert(temp); } if (ok) { tie(num1,num2,num3)={i,j,m}; br=1; break; } } } } vi a; for (int i=0; i<=n+2; i++) { if (i!=num1 && i!=num2 && i!=num3) { a.pb(i); } } vi b=use_machine(a); for (int x=0; x<256; x++) { vi seen(256,0); bool ok=1; for (int i=0; i<n; i++) { if ((b[i]^x)>n+2 || (b[i]^x)==num1 || (b[i]^x)==num2 || (b[i]^x)==num3) { ok=0; break; } if (seen[b[i]^x]) { ok=0; break; } seen[b[i]^x]=1; } if (ok) { for (int i=0; i<n; i++) { b[i]^=x; b[i]-=(b[i]>=num1)+(b[i]>=num2)+(b[i]>=num3); } break; } } return b; } vi a(n); iota(all(a),0); vi b=use_machine(a); for (int x=0; x<256; x++) { vi seen(256,0); bool ok=1; for (int i=0; i<n; i++) { if ((b[i]^x)>=n) { ok=0; break; } if (seen[b[i]^x]) { ok=0; break; } seen[b[i]^x]=1; } if (ok) { for (int i=0; i<n; i++) { b[i]^=x; } break; } } return b; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...