Submission #204064

# Submission time Handle Problem Language Result Execution time Memory
204064 2020-02-24T06:12:52 Z Segtree Scales (IOI15_scales) C++14
55.5556 / 100
6 ms 376 KB
#include"scales.h"
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
#define chmin(a,b) a=min(a,b)
#define chmax(a,b) a=max(a,b)
#define rep(i,n) for(int i=0;i<n;i++)
#define mod 1000000007
#define mad(a,b) a=(a+b)%mod
/*int VALUE[6];
int getLightest(int a,int b,int c){
	a--,b--,c--;
	vector<P> v;
	v.push_back(make_pair(VALUE[a],a));
	v.push_back(make_pair(VALUE[b],b));
	v.push_back(make_pair(VALUE[c],c));
	sort(v.begin(),v.end());
	return v[0].second+1;
}
int getMedian(int a,int b,int c){
	a--,b--,c--;
	vector<P> v;
	v.push_back(make_pair(VALUE[a],a));
	v.push_back(make_pair(VALUE[b],b));
	v.push_back(make_pair(VALUE[c],c));
	sort(v.begin(),v.end());
	return v[1].second+1;
}
int getHeaviest(int a,int b,int c){
	a--,b--,c--;
	vector<P> v;
	v.push_back(make_pair(VALUE[a],a));
	v.push_back(make_pair(VALUE[b],b));
	v.push_back(make_pair(VALUE[c],c));
	sort(v.begin(),v.end());
	return v[2].second+1;
}
int getNextLightest(int a,int b,int c,int d){
	a--,b--,c--,d--;
	vector<P> v;
	v.push_back(make_pair(VALUE[a],a));
	v.push_back(make_pair(VALUE[b],b));
	v.push_back(make_pair(VALUE[c],c));
	v.push_back(make_pair(VALUE[d],d));
	sort(v.begin(),v.end());
	rep(i,4)if(v[i].second==d){
		return v[(i+1)%4].second+1;
	}
}
void answer(int w[]){
	rep(i,6)cout<<w[i]<<" "; cout<<endl;
}*/

void init(int T){
	return;
}
void orderCoins(){
	int w[6];
	vector<ll> a;
	rep(i,6)a.push_back(i+1);
	int v1=getNextLightest(a[1],a[2],a[3],a[0]);
	int v2=getNextLightest(v1,a[4],a[5],a[0]);
	w[0]=a[0],w[1]=v2;
	
	vector<ll> b;
	for(int i=1;i<=6;i++){
		bool ok=1;
		rep(j,2)if(w[j]==i)ok=0;
		if(ok)b.push_back(i);
	}
	int v3=getNextLightest(b[0],b[1],b[2],w[1]);
	int v4=getNextLightest(v3,b[3],w[0],w[1]);
	w[2]=v4;
	
	vector<ll> c;
	for(int i=1;i<=6;i++){
		bool ok=1;
		rep(j,3)if(w[j]==i)ok=0;
		if(ok)c.push_back(i);
	}
	int v5=getNextLightest(c[0],c[1],c[2],w[2]);
	w[3]=v5;
	
	vector<ll> d;
	for(int i=1;i<=6;i++){
		bool ok=1;
		rep(j,4)if(w[j]==i)ok=0;
		if(ok)d.push_back(i);
	}
	int v6=getNextLightest(d[0],d[1],w[2],w[3]);
	w[4]=v6;
	
	for(int i=1;i<=6;i++){
		bool ok=1;
		rep(j,5)if(w[j]==i)ok=0;
		if(ok)w[5]=i;
	}
	
	int v7=getLightest(w[0],w[2],w[4]);
	int v8;
	for(int i=0;i<=4;i+=2){
		if(v7==w[i]){
			int k1=w[(i+5)%6];
			int k2=w[i];
			int k3=w[(i+1)%6];
			v8=getLightest(k1,k2,k3);
			break;
		}
	}
	
	int pnt=-1;
	rep(i,6)if(w[i]==v8)pnt=i;
	int ww[6];
	rep(i,6)ww[(i-pnt+6)%6]=w[i];
	
	answer(ww);
}/*
int main(){
	init(10);
	rep(u,10){
		rep(i,6)VALUE[i]=i;
		rep(u,100)swap(VALUE[rand()%6],VALUE[rand()%6]);
		orderCoins();
		vector<P> v;
		rep(i,6)v.push_back(make_pair(VALUE[i],i+1));
		sort(v.begin(),v.end());
		rep(i,6)cout<<v[i].second<<" "; cout<<endl;cout<<"--"<<endl;
	}
}*/


Compilation message

scales.cpp: In function 'void init(int)':
scales.cpp:57:15: warning: unused parameter 'T' [-Wunused-parameter]
 void init(int T){
               ^
scales.cpp: In function 'void orderCoins()':
scales.cpp:64:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
  int v1=getNextLightest(a[1],a[2],a[3],a[0]);
                                            ^
scales.cpp:64:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:64:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:64:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:65:42: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
  int v2=getNextLightest(v1,a[4],a[5],a[0]);
                                          ^
scales.cpp:65:42: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:65:42: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:66:10: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
  w[0]=a[0],w[1]=v2;
          ^
scales.cpp:74:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
  int v3=getNextLightest(b[0],b[1],b[2],w[1]);
                                            ^
scales.cpp:74:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:74:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:75:42: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
  int v4=getNextLightest(v3,b[3],w[0],w[1]);
                                          ^
scales.cpp:84:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
  int v5=getNextLightest(c[0],c[1],c[2],w[2]);
                                            ^
scales.cpp:84:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:84:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:93:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
  int v6=getNextLightest(d[0],d[1],w[2],w[3]);
                                            ^
scales.cpp:93:44: warning: conversion to 'int' from '__gnu_cxx::__alloc_traits<std::allocator<long long int> >::value_type {aka long long int}' may alter its value [-Wconversion]
scales.cpp:115:10: warning: 'v8' may be used uninitialized in this function [-Wmaybe-uninitialized]
  rep(i,6)if(w[i]==v8)pnt=i;
          ^~
# Verdict Execution time Memory Grader output
1 Partially correct 5 ms 376 KB Output is partially correct
2 Partially correct 5 ms 256 KB Output is partially correct
3 Partially correct 5 ms 256 KB Output is partially correct
4 Partially correct 5 ms 248 KB Output is partially correct
5 Partially correct 5 ms 376 KB Output is partially correct
6 Partially correct 5 ms 256 KB Output is partially correct
7 Partially correct 5 ms 256 KB Output is partially correct
8 Partially correct 6 ms 376 KB Output is partially correct
9 Partially correct 5 ms 376 KB Output is partially correct
10 Partially correct 5 ms 256 KB Output is partially correct
11 Partially correct 5 ms 248 KB Output is partially correct
12 Partially correct 5 ms 376 KB Output is partially correct
13 Partially correct 5 ms 256 KB Output is partially correct
14 Partially correct 5 ms 256 KB Output is partially correct
15 Partially correct 5 ms 256 KB Output is partially correct
16 Partially correct 5 ms 256 KB Output is partially correct
17 Partially correct 5 ms 256 KB Output is partially correct
18 Partially correct 5 ms 256 KB Output is partially correct
19 Partially correct 5 ms 256 KB Output is partially correct
20 Partially correct 5 ms 256 KB Output is partially correct
21 Partially correct 5 ms 376 KB Output is partially correct
22 Partially correct 5 ms 256 KB Output is partially correct
23 Partially correct 5 ms 256 KB Output is partially correct
24 Partially correct 5 ms 256 KB Output is partially correct
25 Partially correct 5 ms 256 KB Output is partially correct
26 Partially correct 5 ms 256 KB Output is partially correct
27 Partially correct 5 ms 256 KB Output is partially correct
28 Partially correct 5 ms 256 KB Output is partially correct
29 Partially correct 5 ms 256 KB Output is partially correct
30 Partially correct 5 ms 256 KB Output is partially correct
31 Partially correct 5 ms 256 KB Output is partially correct
32 Partially correct 5 ms 256 KB Output is partially correct
33 Partially correct 5 ms 256 KB Output is partially correct
34 Partially correct 6 ms 256 KB Output is partially correct
35 Partially correct 5 ms 248 KB Output is partially correct
36 Partially correct 5 ms 376 KB Output is partially correct
37 Partially correct 5 ms 256 KB Output is partially correct
38 Partially correct 5 ms 256 KB Output is partially correct
39 Partially correct 5 ms 256 KB Output is partially correct
40 Partially correct 5 ms 256 KB Output is partially correct