# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
783828 | lollipop | Scales (IOI15_scales) | C++17 | 1 ms | 224 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/rope>
//#define int long long
#define pb push_back
#define s second
#define f first
#define pf push_front
#define inf 100000000000000000
#define bitebi __builtin_popcountll
#define FOR( i , n ) for( int i = 0 ; i < n ; i ++ )
#define YES cout <<"YES\n"
#define NO cout << "NO\n"
#define debug cout << "Here Fine" << endl ;
#define pr pair < int , int >
#define fbo find_by_order // returns iterator
#define ook order_of_key // returns strictly less numbers than key
using namespace std ;
//#pragma GCC optimize("Ofast")
//#pragma GCC target("avx,avx2,fma")
using namespace __gnu_pbds;
using namespace __gnu_cxx;
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
const double Pi=acos(-1.0);
const double EPS=1E-8;
const int mod = 1000000007 ;
const int mod1 = 998244353 ;
const int N = 2e5 + 10 ;
mt19937 R(time(0));
map < int , int > ma , ma1 ;
#include "scales.h"
//#define MAXN 6
//#define MAX_ANSWER_CALLS 1
//
//static int realC[MAXN];
//static int ind[MAXN];
//static int numQueries;
//static int numAnswerCalls;
//
//static int array[300];
//static int arraySize;
//static int ptr;
// void initNewTest() {
// for (int i = 0; i < MAXN; i++) {
// cin >> realC[ i ] ;
// realC[i]--;
// ind[realC[i]] = i;
// }
//
// numQueries = 0;
// numAnswerCalls = 0;
//}
//
//void answer(int C[]) {
// int i;
//
// numAnswerCalls++;
// if (numAnswerCalls > MAX_ANSWER_CALLS)
// return;
//
// for (i = 0; i < 6; i++)
// printf("%d ", C[i]);
// printf("%d\n", numQueries);
//}
//
////static void checkQuery(int A, int B, int C, int D) {
//// if (D == -1) {
//// if (A < 1 || A > 6 || B < 1 || B > 6 || C < 1 || C > 6)
//// assert(0);
//// if (A == B || B == C || A == C)
//// assert(0);
//// } else {
//// if (A < 1 || A > 6 || B < 1 || B > 6 || C < 1 || C > 6 || D < 1 || D > 6)
//// assert(0);
//// if (A == B || A == C || A == D || B == C || B == D || C == D)
//// assert(0);
//// }
////}
//
//int getMedian(int A, int B, int C) {
// numQueries++;
// // checkQuery(A, B, C, -1);
//
// A--;
// B--;
// C--;
//
// if (ind[B] < ind[A] && ind[A] < ind[C])
// return A + 1;
//
// if (ind[C] < ind[A] && ind[A] < ind[B])
// return A + 1;
//
// if (ind[A] < ind[B] && ind[B] < ind[C])
// return B + 1;
//
// if (ind[C] < ind[B] && ind[B] < ind[A])
// return B + 1;
//
// return C + 1;
//}
//
//int getHeaviest(int A, int B, int C) {
// numQueries++;
//// checkQuery(A, B, C, -1);
//
// A--;
// B--;
// C--;
//
// if (ind[A] > ind[B] && ind[A] > ind[C])
// return A + 1;
//
// if (ind[B] > ind[A] && ind[B] > ind[C])
// return B + 1;
//
// return C + 1;
//}
//
//int getLightest(int A, int B, int C) {
// numQueries++;
// // checkQuery(A, B, C, -1);
//
// A--;
// B--;
// C--;
//
// if (ind[A] < ind[B] && ind[A] < ind[C])
// return A + 1;
//
// if (ind[B] < ind[A] && ind[B] < ind[C])
// return B + 1;
//
// return C + 1;
//}
//
//int getNextLightest(int A, int B, int C, int D) {
// int allLess = 1;
//
// numQueries++;
// // checkQuery(A, B, C, D);
//
// A--;
// B--;
// C--;
// D--;
//
// if (ind[A] > ind[D] || ind[B] > ind[D] || ind[C] > ind[D])
// allLess = 0;
//
// if (allLess == 1) {
// if (ind[A] < ind[B] && ind[A] < ind[C])
// return A + 1;
//
// if (ind[B] < ind[A] && ind[B] < ind[C])
// return B + 1;
//
// return C + 1;
// }
//
// if (ind[A] > ind[D]) {
// if ((ind[A] < ind[B] || ind[B] < ind[D]) &&
// (ind[A] < ind[C] || ind[C] < ind[D]))
// return A + 1;
// }
//
// if (ind[B] > ind[D]) {
// if ((ind[B] < ind[A] || ind[A] < ind[D]) &&
// (ind[B] < ind[C] || ind[C] < ind[D]))
// return B + 1;
// }
//
// return C + 1;
//}
void init(int T){
// heheh
}
void orderCoins(){
int a = getLightest( 1 , 2 , 3 ) ;
int b = getMedian( 1 , 2 , 3 ) ;
int c = 6 - a - b ;
int d = 4 , e = 5 , f = 6 ;
// for d
int x = getNextLightest( a , b , c , d ) ;
if( x != a ){
if( x == b ){
swap( d , c ) ;
swap( c , b ) ;
}
else{
swap( d , c ) ;
}
}
else{
int y = getHeaviest( b , c , d ) ;
if( y != d ){
swap( d , c ) ;
swap( c , b ) ;
swap( b , a ) ;
}
}
// for e
x = getNextLightest( b , c , d , e ) ;
if( x != b ){
if( x == c ){
swap( e , d ) ;
swap( d , c ) ;
}
else{
swap( e , d ) ;
}
}
else{
int y = getMedian( a , b , e ) ;
if( y == a ){
swap( e , d ) ;
swap( d , c ) ;
swap( c , b ) ;
swap( b , a ) ;
}
else{
if( y == e ){
swap( e , d ) ;
swap( d , c ) ;
swap( c , b ) ;
}
}
}
// for f
x = getNextLightest( a , c , e , f ) ;
if( x == a ){
int y = getLightest( a , b , f ) ;
if( y == f ){
swap( f , e ) ;
swap( e , d ) ;
swap( d , c ) ;
swap( c , b ) ;
swap( b , a ) ;
}
}
else{
if( x == c ){
int y = getMedian( a , b , f ) ;
if( y == b ){
swap( f , e ) ;
swap( e , d ) ;
swap( d , c ) ;
}
else{
swap( f , e ) ;
swap( e , d ) ;
swap( d , c ) ;
swap( c , b ) ;
}
}
else{
int y = getMedian( d , e , f ) ;
if( y == f ){
swap( f , e ) ;
}
else{
swap( f , e ) ;
swap( e , d ) ;
}
}
}
int W[] = { a , b , c , d , e , f } ;
answer( W ) ;
}
//
//int main() {
//
//
// int T, i;
//
// cin >> T ;
//
// init(T);
//
// for (i = 1; i <= T; i++) {
// initNewTest();
// orderCoins();
// }
//
// return 0;
//}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |