Submission #83899


Source Code Expand

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <complex>
#include <stack>
#include <queue>
using namespace std;
static const double EPS = 1e-10;
typedef long long ll;
#define rep(i,n) for(int i=0;i<n;i++)
#define rev(i,n) for(int i=n-1;i>=0;i--)
#define sz(a) a.size()
#define all(a) a.begin(),a.end()
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define SS stringstream
#define DBG1(a) rep(_X,sz(a)){printf("%d ",a[_X]);}puts("");
#define DBG2(a) rep(_X,sz(a)){rep(_Y,sz(a[_X]))printf("%d ",a[_X][_Y]);puts("");}
#define bitcount(b) __builtin_popcount(b)
#define REP(i, s, e) for ( int i = s; i <= e; i++ )  
 
const double INF = 1e12;
typedef complex<double> P,point;
typedef vector<P> G,polygon;
namespace std {bool operator < (const P& a, const P& b) {return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);} }
double cross(const P& a, const P& b) {return imag(conj(a)*b);}
double dot(const P& a, const P& b) {return real(conj(a)*b);}
struct L : public vector<P> {L(const P &a, const P &b) {push_back(a); push_back(b);} };
struct C {P p; double r;C(const P &p, double r) : p(p), r(r) { } C(){} };
int ccw(P a, P b, P c) {
	b -= a; c -= a;
	if (cross(b, c) > 0)   return +1;
	if (cross(b, c) < 0)   return -1;
	if (dot(b, c) < 0) return +2;
	if (norm(b) < norm(c)) return -2;
	return 0;
}
 
// Check Funcs //
bool intersectLL(const L &l, const L &m) {return abs(cross(l[1]-l[0], m[1]-m[0])) > EPS || abs(cross(l[1]-l[0], m[0]-l[0])) < EPS;}
bool intersectLS(const L &l, const L &s) {return cross(l[1]-l[0], s[0]-l[0])*cross(l[1]-l[0], s[1]-l[0]) < EPS;}
bool intersectLP(const L &l, const P &p) {return abs(cross(l[1]-p, l[0]-p)) < EPS;}
bool intersectSS(const L &s, const L &t) {return ccw(s[0],s[1],t[0])*ccw(s[0],s[1],t[1]) <= 0 && ccw(t[0],t[1],s[0])*ccw(t[0],t[1],s[1]) <= 0;}
bool intersectSP(const L &s, const P &p) {return abs(s[0]-p)+abs(s[1]-p)-abs(s[1]-s[0]) < EPS;}
 
// Where is Point in Polygon? //
#define curr(P, i) P[i]
#define next(P, i) P[(i+1)%P.size()]
enum { OUT, ON, IN };
int contains(const polygon& P, const point& p) {
	bool in = false;
	for (int i = 0; i < P.size(); ++i) {
		point a = curr(P,i) - p, b = next(P,i) - p;
		if (imag(a) > imag(b)) swap(a, b);
		if (imag(a) <= 0 && 0 < imag(b))
			if (cross(a, b) < 0) in = !in;
		if (cross(a, b) == 0 && dot(a, b) <= 0) return ON;
	}
	return in ? IN : OUT;
}
// Area of Polygon //
double area2(const polygon& P) {
	double A = 0;
	for (int i = 0; i < P.size(); ++i)A += cross(curr(P, i), next(P, i));
	return A;
}
// Totsuhou! Andrew's Monotone Chain //
 
vector<point> convex_hull(vector<point> ps) {
  int n = ps.size(), k = 0;
  sort(ps.begin(), ps.end());
  vector<point> ch(2*n);
  for (int i = 0; i < n; ch[k++] = ps[i++]) // lower-hull
    while (k >= 2 && ccw(ch[k-2], ch[k-1], ps[i]) <= 0) --k;
  for (int i = n-2, t = k+1; i >= 0; ch[k++] = ps[i--]) // upper-hull
    while (k >= t && ccw(ch[k-2], ch[k-1], ps[i]) <= 0) --k;
  ch.resize(k-1);
  return ch;
}
 
P projection(const L &l, const P &p) {double t = dot(p-l[0], l[0]-l[1]) / norm(l[0]-l[1]);return l[0] + t*(l[0]-l[1]);}
P reflection(const L &l, const P &p) {return p + 2.0 * (projection(l, p) - p);}
 
double distanceLP(const L &l, const P &p) {
	return abs(p - projection(l, p));
}
double distanceLL(const L &l, const L &m) {
	return intersectLL(l, m) ? 0 : distanceLP(l, m[0]);
}
double distanceLS(const L &l, const L &s) {
	if (intersectLS(l, s)) return 0;
	return min(distanceLP(l, s[0]), distanceLP(l, s[1]));
}
double distanceSP(const L &s, const P &p) {
	const P r = projection(s, p);
	if (intersectSP(s, r)) return abs(r - p);
	return min(abs(s[0] - p), abs(s[1] - p));
}
double distanceSS(const L &s, const L &t) {
	if (intersectSS(s, t)) return 0;
	return min(min(distanceSP(s, t[0]), distanceSP(s, t[1])),min(distanceSP(t, s[0]), distanceSP(t, s[1])));
}
 
P crosspoint(const L &l, const L &m) {
	double A = cross(l[1] - l[0], m[1] - m[0]);
	double B = cross(l[1] - l[0], l[1] - m[0]);
	if (abs(A) < EPS && abs(B) < EPS) return m[0];
	return m[0] + B / A * (m[1] - m[0]);
}
 
vector<P> C_cp(C a,C b){
	vector<P> ret;
	double L = abs(a.p-b.p);
 
	/* anma dekitenai */
	if(	L-a.r-b.r > EPS || (abs(a.p-b.p)<EPS && fabs(a.r-b.r)<EPS) || 
		abs(a.p-b.p) < abs(a.r-b.r)
	)return ret;
 
	double theta = atan2(b.p.imag()-a.p.imag(),b.p.real()-a.p.real());
	double c = (L*L+a.r*a.r-b.r*b.r)/(2*L*a.r);
	ret.push_back(
		P(a.p.real()+a.r*cos(theta+acos(c)),
		  a.p.imag()+a.r*sin(theta+acos(c)))
	);
	if(fabs(L-a.r-b.r) > EPS)
		ret.push_back(
			P(a.p.real()+a.r*cos(theta-acos(c)),
			  a.p.imag()+a.r*sin(theta-acos(c)))
		);
	return ret;
}
 
 
P getPedal(L l, P p){
	double A;
	if(abs(l[1].real()-l[0].real()) < EPS){
		return P(l[1].real(),p.imag()); // important
	}else{
		A = (l[1].imag()-l[0].imag())/(l[1].real()-l[0].real());
	}
	double a = -A , b = 1 , c = A*l[0].real() - l[0].imag();
	double t = (a*p.real() + b*p.imag() + c)/(a*a+b*b);
	return p-t * P(a,b);
}
 
vector<P> crosspointCL(const L l, const C c){
	vector<P> ret;
	P p = getPedal(l,c.p);
	if(	abs(p-c.p) > c.r+EPS)return ret;
	P e = P((l[1]-l[0])/abs(l[1]-l[0]));
	double S = sqrt(c.r*c.r-abs(p-c.p)*abs(p-c.p));
	ret.push_back(p+S*e);
	ret.push_back(p-S*e);
	return ret;
}
 
P getCircumcenter(P a,P b,P c){
	double A1 = 2 * ( b.real() - a.real() );
	double B1 = 2 * ( b.imag() - a.imag() );
	double C1 = pow(a.real(),2)-pow(b.real(),2) + pow(a.imag(),2)-pow(b.imag(),2);
	double A2 = 2 * ( c.real() - a.real() );
	double B2 = 2 * ( c.imag() - a.imag() );
	double C2 = pow(a.real(),2)-pow(c.real(),2) + pow(a.imag(),2)-pow(c.imag(),2);
	double X = (B1 * C2 - B2 * C1) / (A1 * B2 - A2 * B1);
	double Y = (C1 * A2 - C2 * A1) / (A1 * B2 - A2 * B1);
	return P(X,Y);
}
 
double AreaOfPolygon(vector<P> p){
	double S = 0 ; 
	p.push_back(p[0]);
	/* 多角形の面積公式 (反時計回りの場合) */
	for(int i = 0 ; i < p.size()-1 ; i++){
		S += (p[i].real() - p[i+1].real()) * (p[i].imag()+p[i+1].imag());
	}
	S /= 2.0;
	return S;
}

typedef double Weight;
struct Edge {
  int src, dst;
  Weight weight;
  Edge(int src, int dst, Weight weight) :
    src(src), dst(dst), weight(weight) { }
};
bool operator < (const Edge &e, const Edge &f) {
  return e.weight != f.weight ? e.weight > f.weight : // !!INVERSE!!
    e.src != f.src ? e.src < f.src : e.dst < f.dst;
}
typedef vector<Edge> Edges;
typedef vector<Edges> Graph;

typedef vector<Weight> Array;
typedef vector<Array> Matrix;

// adj[i][j] = w(i,j)
#define N (20)
Weight adj[N][N];
int size, sorted[N][N], num[N];
void rec(int match[], int p, int l, Weight w, Weight &opt) {
  int q = p + 1, i;
  if (w >= opt) return;
  for (; q < size; ++q) if (match[q] == -1) break;
  int m = num[q], *list = sorted[q];
  rep(j,m) if (match[i=list[j]] == -1) { // process greedily
    match[q] = i, match[i] = q;
    w += adj[i][q];
    if (l + 1 < size / 2) rec(match, q, l+1, w, opt);
    else opt = min(opt, w);
    w -= adj[i][q];
    match[q] = -1, match[i] = -1;
  }
}
int gs;
bool compareWith(int i, int j) { return adj[gs][i] < adj[gs][j]; }
Weight minimumWeightMatching() {
  for (gs = 0; gs < size; ++gs) { // sort adjacent nodes by edge weight
    for (int j = gs+1; j < size; ++j)
      sorted[gs][num[gs]++] = j;
    sort(sorted[gs], sorted[gs]+num[gs], compareWith);
  }
  int match[size]; fill(match, match+size, -1);
  Weight opt = 1e18;
  rec(match, -1, 0, 0, opt);
  return opt;
}
#include <cassert>

P v[100];
inline double calc(vector< pair<int,int> > &a){
	double ans = 0;
	for(int k = 0 ; k < a.size() ; k++){
		int i = a[k].first;
		int j = a[k].second;
		if( i == -1 || j == -1 ){
			if( i == -1 ){
				ans += abs(v[j].real());
			}else{
				ans += abs(v[i].real());
			}
			continue;
		}
		double dy = (v[i].imag()-v[j].imag());
		double dx = 0;
		{
		double x1 = abs(v[i].real());
		double x2 = -x1;
		dx = min(abs(v[i].real()-x1)+abs(v[j].real()-x2),abs(v[i].real()-x2)+abs(v[j].real()-x1));
		}
		{
		double x1 = abs(v[j].real());
		double x2 = -x1;
		dx = min(dx,min(abs(v[i].real()-x1)+abs(v[j].real()-x2),abs(v[i].real()-x2)+abs(v[j].real()-x1)));
		}
		ans += min(abs(v[i].real())+abs(v[j].real()),abs(P(dx,dy)));
	}
	return ans;
}
inline double calc2(pair<int,int> &x){
		int i = x.first;
		int j = x.second;
		if( i == -1 || j == -1 ){
			if( i == -1 ){
				return abs(v[j].real());
			}else{
				return abs(v[i].real());
			}
		}
		double dy = (v[i].imag()-v[j].imag());
		double dx = 0;
		{
		double x1 = abs(v[i].real());
		double x2 = -x1;
		dx = min(abs(v[i].real()-x1)+abs(v[j].real()-x2),abs(v[i].real()-x2)+abs(v[j].real()-x1));
		}
		{
		double x1 = abs(v[j].real());
		double x2 = -x1;
		dx = min(dx,min(abs(v[i].real()-x1)+abs(v[j].real()-x2),abs(v[i].real()-x2)+abs(v[j].real()-x1)));
		}
		return min(abs(v[i].real())+abs(v[j].real()),abs(P(dx,dy)));
}
double doit(int n){
	vector<pair<int,int> > a;
	for(int i = 0 ; i < n ; i+=2){
		a.push_back(mp(i,(i+1>=n?-1:i+1)));
	}
	double current = calc(a);
	double src,dst;
	while(1){
		int ok = 0;
		for(int i = 0 ; i < a.size() ; i++){
			for(int j = i + 1 ; j < a.size() ; j++){	
				src = calc2(a[i])+calc2(a[j]);
				swap(a[i].second,a[j].first); 
				dst = calc2(a[i])+calc2(a[j]);
				
				if( dst >= src ){
					swap(a[i].second,a[j].first); 
				}else{
					current -= src-dst;
					ok = 1;
				}
				src = calc2(a[i])+calc2(a[j]);
				swap(a[i].second,a[j].second); 
				dst = calc2(a[i])+calc2(a[j]);
				if( dst >= src ){
					swap(a[i].second,a[j].second); 
				}else{
					current -= src-dst;
					ok = 1;
				}
			}
		}
		if(!ok)break;
	}
	return calc(a);
	
}
int n;


#include <time.h>
clock_t start, en;

int main(){	
	cin >> n;
	if( n == 1 ){
		P a;
		cin >> a.real() >> a.imag();
		printf("%.10lf\n",abs(a.real()));
		return 0;
	}else if( n <= 100 ){
		srand(time(NULL));
		for(int i = 0 ; i < n ; i++){
			//v[i].real() = rand() % 100;
			//v[i].imag() = -rand() % 100;
			cin >> v[i].real() >> v[i].imag();
		}
		clock_t start = clock(),end;
		double ans = 1e9;
		for(int i = 0 ; i < 1000 ; i++){
			random_shuffle(v,v+n);
			ans = min(ans,doit(n));
			end = clock();
			if( (double)(end - start) / CLOCKS_PER_SEC > 1.8 ) break;
		}
		printf("%.10lf\n",ans);
		/*
		P v[20];
		for(int i = 0 ; i < n ; i++){
			cin >> v[i].real() >> v[i].imag();
		}
		
		if( n & 1 ){
			double answer = 1e9;
			for(int k = 0 ; k < n ; k++){
				P v2[20];
				int c = 0;
				for(int i = 0 ; i < n ; i++){
					if( i == k ) continue;
					v2[c++] = v[i];
				}
				for(int i = 0 ; i < c ; i++){
					for(int j = 0 ; j < c ; j++){
						double dy = (v2[i].imag()-v2[j].imag());
						double dx = 0;
						{
						double x1 = abs(v2[i].real());
						double x2 = -x1;
						dx = min(abs(v2[i].real()-x1)+abs(v2[j].real()-x2),abs(v2[i].real()-x2)+abs(v2[j].real()-x1));
						}
						{
						double x1 = abs(v2[j].real());
						double x2 = -x1;
						dx = min(dx,min(abs(v2[i].real()-x1)+abs(v2[j].real()-x2),abs(v2[i].real()-x2)+abs(v2[j].real()-x1)));
						}
						adj[i][j] = min(abs(v2[i].real())+abs(v2[j].real()),abs(P(dx,dy)));
					}
				}
				size = c;
				answer = min(answer,minimumWeightMatching()+abs(v[k].real()));
			}
			printf("%.10lf\n", answer);
			return 0;
		}
		
		for(int i = 0 ; i < n ; i++){
			for(int j = 0 ; j < n ; j++){
				double dy = (v[i].imag()-v[j].imag());
				double dx = 0;
				{
				double x1 = abs(v[i].real());
				double x2 = -x1;
				dx = min(abs(v[i].real()-x1)+abs(v[j].real()-x2),abs(v[i].real()-x2)+abs(v[j].real()-x1));
				}
				{
				double x1 = abs(v[j].real());
				double x2 = -x1;
				dx = min(dx,min(abs(v[i].real()-x1)+abs(v[j].real()-x2),abs(v[i].real()-x2)+abs(v[j].real()-x1)));
				}
				adj[i][j] = min(abs(v[i].real())+abs(v[j].real()),abs(P(dx,dy)));
			}
		}
		*/
		//size = n;
		//printf("%.10lf\n", minimumWeightMatching());
		
	}
	
	
}

Submission Info

Submission Time
Task B - 玉座の間
User kyuridenamida
Language C++ (G++ 4.6.4)
Score 200
Code Size 12448 Byte
Status AC
Exec Time 1835 ms
Memory 820 KB

Judge Result

Set Name Subtask1 Subtask2 Subtask3 Subtask4
Score / Max Score 50 / 50 50 / 50 50 / 50 50 / 50
Status
AC × 25
AC × 50
AC × 75
AC × 100
Set Name Test Cases
Subtask1 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt
Subtask2 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt
Subtask3 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt, 31_rand00.txt, 31_rand01.txt, 31_rand02.txt, 31_rand03.txt, 31_rand04.txt, 31_rand05.txt, 31_rand06.txt, 31_rand07.txt, 31_rand08.txt, 31_rand09.txt, 31_rand10.txt, 31_rand11.txt, 31_rand12.txt, 31_rand13.txt, 31_rand14.txt, 31_rand15.txt, 31_rand16.txt, 31_rand17.txt, 31_rand18.txt, 31_rand19.txt, 31_rand20.txt, 31_rand21.txt, 31_rand22.txt, 31_rand23.txt, 31_rand24.txt
Subtask4 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt, 31_rand00.txt, 31_rand01.txt, 31_rand02.txt, 31_rand03.txt, 31_rand04.txt, 31_rand05.txt, 31_rand06.txt, 31_rand07.txt, 31_rand08.txt, 31_rand09.txt, 31_rand10.txt, 31_rand11.txt, 31_rand12.txt, 31_rand13.txt, 31_rand14.txt, 31_rand15.txt, 31_rand16.txt, 31_rand17.txt, 31_rand18.txt, 31_rand19.txt, 31_rand20.txt, 31_rand21.txt, 31_rand22.txt, 31_rand23.txt, 31_rand24.txt, 41_rand00.txt, 41_rand01.txt, 41_rand02.txt, 41_rand03.txt, 41_rand04.txt, 41_rand05.txt, 41_rand06.txt, 41_rand07.txt, 41_rand08.txt, 41_rand09.txt, 41_rand10.txt, 41_rand11.txt, 41_rand12.txt, 41_rand13.txt, 41_rand14.txt, 41_rand15.txt, 41_rand16.txt, 41_rand17.txt, 41_rand18.txt, 41_rand19.txt, 41_rand20.txt, 41_rand21.txt, 41_rand22.txt, 41_rand23.txt, 41_rand24.txt
Case Name Status Exec Time Memory
11_rand00.txt AC 21 ms 632 KB
11_rand01.txt AC 20 ms 788 KB
11_rand02.txt AC 20 ms 788 KB
11_rand03.txt AC 20 ms 784 KB
11_rand04.txt AC 20 ms 796 KB
11_rand05.txt AC 19 ms 796 KB
11_rand06.txt AC 20 ms 792 KB
11_rand07.txt AC 20 ms 772 KB
11_rand08.txt AC 20 ms 792 KB
11_rand09.txt AC 20 ms 784 KB
11_rand10.txt AC 20 ms 792 KB
11_rand11.txt AC 20 ms 796 KB
11_rand12.txt AC 20 ms 792 KB
11_rand13.txt AC 20 ms 688 KB
11_rand14.txt AC 20 ms 796 KB
11_rand15.txt AC 20 ms 788 KB
11_rand16.txt AC 20 ms 792 KB
11_rand17.txt AC 20 ms 772 KB
11_rand18.txt AC 20 ms 780 KB
11_rand19.txt AC 19 ms 788 KB
11_rand20.txt AC 19 ms 792 KB
11_rand21.txt AC 20 ms 796 KB
11_rand22.txt AC 20 ms 780 KB
11_rand23.txt AC 20 ms 800 KB
11_rand24.txt AC 20 ms 784 KB
21_rand00.txt AC 22 ms 788 KB
21_rand01.txt AC 25 ms 792 KB
21_rand02.txt AC 26 ms 760 KB
21_rand03.txt AC 22 ms 796 KB
21_rand04.txt AC 24 ms 796 KB
21_rand05.txt AC 32 ms 784 KB
21_rand06.txt AC 20 ms 784 KB
21_rand07.txt AC 22 ms 792 KB
21_rand08.txt AC 24 ms 788 KB
21_rand09.txt AC 25 ms 788 KB
21_rand10.txt AC 24 ms 800 KB
21_rand11.txt AC 23 ms 788 KB
21_rand12.txt AC 24 ms 784 KB
21_rand13.txt AC 23 ms 788 KB
21_rand14.txt AC 28 ms 792 KB
21_rand15.txt AC 31 ms 800 KB
21_rand16.txt AC 24 ms 788 KB
21_rand17.txt AC 24 ms 788 KB
21_rand18.txt AC 34 ms 788 KB
21_rand19.txt AC 26 ms 796 KB
21_rand20.txt AC 30 ms 796 KB
21_rand21.txt AC 22 ms 788 KB
21_rand22.txt AC 21 ms 788 KB
21_rand23.txt AC 21 ms 788 KB
21_rand24.txt AC 27 ms 788 KB
31_rand00.txt AC 23 ms 816 KB
31_rand01.txt AC 24 ms 788 KB
31_rand02.txt AC 69 ms 788 KB
31_rand03.txt AC 56 ms 692 KB
31_rand04.txt AC 60 ms 696 KB
31_rand05.txt AC 34 ms 664 KB
31_rand06.txt AC 33 ms 796 KB
31_rand07.txt AC 28 ms 668 KB
31_rand08.txt AC 22 ms 696 KB
31_rand09.txt AC 56 ms 700 KB
31_rand10.txt AC 32 ms 796 KB
31_rand11.txt AC 25 ms 780 KB
31_rand12.txt AC 64 ms 788 KB
31_rand13.txt AC 27 ms 792 KB
31_rand14.txt AC 33 ms 796 KB
31_rand15.txt AC 26 ms 796 KB
31_rand16.txt AC 25 ms 776 KB
31_rand17.txt AC 45 ms 792 KB
31_rand18.txt AC 81 ms 696 KB
31_rand19.txt AC 85 ms 792 KB
31_rand20.txt AC 75 ms 792 KB
31_rand21.txt AC 26 ms 788 KB
31_rand22.txt AC 45 ms 788 KB
31_rand23.txt AC 81 ms 688 KB
31_rand24.txt AC 36 ms 800 KB
41_rand00.txt AC 112 ms 792 KB
41_rand01.txt AC 21 ms 784 KB
41_rand02.txt AC 413 ms 800 KB
41_rand03.txt AC 661 ms 800 KB
41_rand04.txt AC 867 ms 784 KB
41_rand05.txt AC 363 ms 796 KB
41_rand06.txt AC 342 ms 792 KB
41_rand07.txt AC 1223 ms 788 KB
41_rand08.txt AC 54 ms 784 KB
41_rand09.txt AC 295 ms 684 KB
41_rand10.txt AC 25 ms 788 KB
41_rand11.txt AC 857 ms 788 KB
41_rand12.txt AC 1286 ms 792 KB
41_rand13.txt AC 185 ms 692 KB
41_rand14.txt AC 435 ms 792 KB
41_rand15.txt AC 68 ms 696 KB
41_rand16.txt AC 48 ms 788 KB
41_rand17.txt AC 720 ms 796 KB
41_rand18.txt AC 1831 ms 820 KB
41_rand19.txt AC 1835 ms 788 KB
41_rand20.txt AC 473 ms 788 KB
41_rand21.txt AC 39 ms 796 KB
41_rand22.txt AC 277 ms 796 KB
41_rand23.txt AC 1293 ms 796 KB
41_rand24.txt AC 919 ms 700 KB