Submission #59001


Source Code Expand

import java.util.Arrays;
import java.math.BigDecimal;
import java.util.Scanner;

public class Main {

	static long[] a;
	static long[] b;
	static long s = 0;
	static int n;
	//static void test(){
	//	System.out.println(3.999 - (long)3.999);
	//}

	public static void main(String[] args) {
		doIt();
		//test();
	}
	static void doIt(){
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		a = new long[n];
		b = new long[n];
		for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();
			b[i] = sc.nextLong();
		}
		for(long aa : a) s += aa;
		System.out.println(binSearch(0, 1000000000000000000L));
		//System.out.println(binSearch(0, 100));
	}
	static long binSearch(long min, long max){
		long ret = 0;
		long t = (min + max) / 2;
		boolean res = alloc(t);
		if(res)
			if(max == t) 
				if(alloc(min)) ret = min;
				else ret = t;
			else ret = binSearch(min, t);
		else 
			if(min == t) ret = max;
			else ret = binSearch(t, max);
		return ret;
	}
	static boolean alloc(long m){
		boolean ret = true;
		long[] cand = new long[n];
		CAT[] ary = new CAT[n];
		long tm = m;
		for(int i = 0; i < n; i++){
			//double t = 0;
			BigDecimal ta = BigDecimal.valueOf( a[i] );
			BigDecimal tmm = BigDecimal.valueOf( m );
			BigDecimal ts = BigDecimal.valueOf( s );
			//BigDecimal t = (double)a[i] * (double)m / (double)s;
			BigDecimal t = (ta.multiply(tmm));
			//t = t.divide(ts, 40, BigDecimal.ROUND_HALF_EVEN);
			//t = (double)a[i] * (double)m / (double)s;
			//cand[i] += (long)t;
			BigDecimal tt = t.divideToIntegralValue(ts);
			cand[i] += tt.longValue();
			tm -= cand[i];
			ary[i] = new CAT((t.divide(ts, 1000, BigDecimal.ROUND_HALF_EVEN)).subtract(tt), i);
		}
		if(tm > 0){
			Arrays.sort(ary);
			int i = 0;
			while(tm > 0){
				cand[ary[i].id]++;
				tm--;
				i++;
				if(i >= n) i = 0;
			}
		}
		for(int i = 0; i < n; i++){
			if(b[i] > cand[i]){ ret = false; break;}
		}
		return ret;
	}
}

class CAT implements Comparable<CAT> {
	public BigDecimal dec;
	public int id;
	//public double db;
	CAT(BigDecimal r, int n) {
		dec = r;
		id = n;
		//db = r.doubleValue();
	}
	public int compareTo(CAT arg0) {
		return (dec.compareTo(((CAT)arg0).dec))*-1;
		//(dec - ((CAT)arg0).dec < 0)? 1 : -1;
	}
}

Submission Info

Submission Time
Task E - 選挙
User mkiken
Language Java (OpenJDK 1.7.0)
Score 0
Code Size 2310 Byte
Status WA
Exec Time 1582 ms
Memory 63968 KB

Judge Result

Set Name Bubunten All
Score / Max Score 0 / 50 0 / 150
Status
AC × 16
WA × 13
AC × 22
WA × 70
Set Name Test Cases
Bubunten small01.txt, small02.txt, small03.txt, small04.txt, small05.txt, small06.txt, small07.txt, small08.txt, small09.txt, small10.txt, small11.txt, small12.txt, small13.txt, small14.txt, small15.txt, small16.txt, small17.txt, small18.txt, small19.txt, small20.txt, small21.txt, small22.txt, small23.txt, small24.txt, small25.txt, sample1.txt, sample2.txt, sample3.txt, 20_minimal.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 20_minimal.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 49.txt, 50.txt, 51.txt, 52.txt, 53.txt, 54.txt, 55.txt, 56.txt, 57.txt, 58.txt, 59.txt, 60.txt, dekai1.txt, dekai2.txt, small01.txt, small02.txt, small03.txt, small04.txt, small05.txt, small06.txt, small07.txt, small08.txt, small09.txt, small10.txt, small11.txt, small12.txt, small13.txt, small14.txt, small15.txt, small16.txt, small17.txt, small18.txt, small19.txt, small20.txt, small21.txt, small22.txt, small23.txt, small24.txt, small25.txt, yabame1.txt, yabame2.txt, yabame3.txt, yabame4.txt
Case Name Status Exec Time Memory
01.txt WA 1507 ms 61180 KB
02.txt WA 1453 ms 62444 KB
03.txt WA 1359 ms 61008 KB
04.txt WA 1456 ms 60812 KB
05.txt WA 1339 ms 60556 KB
06.txt WA 1340 ms 60476 KB
07.txt WA 1474 ms 63008 KB
08.txt WA 1367 ms 61456 KB
09.txt WA 1346 ms 62272 KB
10.txt WA 1362 ms 60688 KB
11.txt WA 1344 ms 57992 KB
12.txt WA 1374 ms 61704 KB
13.txt WA 1406 ms 61760 KB
14.txt WA 1360 ms 61764 KB
15.txt WA 1349 ms 62536 KB
16.txt WA 1488 ms 59900 KB
17.txt WA 1418 ms 60212 KB
18.txt WA 1352 ms 61732 KB
19.txt WA 1397 ms 60316 KB
20.txt WA 1350 ms 62380 KB
20_minimal.txt AC 479 ms 23612 KB
21.txt WA 1573 ms 61288 KB
22.txt WA 1409 ms 63200 KB
23.txt WA 1352 ms 61672 KB
24.txt WA 1371 ms 62724 KB
25.txt WA 1461 ms 61828 KB
26.txt WA 1370 ms 61008 KB
27.txt AC 1362 ms 61760 KB
28.txt AC 1564 ms 59112 KB
29.txt WA 1444 ms 63968 KB
30.txt WA 1348 ms 61800 KB
31.txt WA 1449 ms 62700 KB
32.txt AC 1371 ms 60224 KB
33.txt WA 1398 ms 59224 KB
34.txt WA 1343 ms 60664 KB
35.txt WA 1366 ms 62624 KB
36.txt WA 1408 ms 62012 KB
37.txt AC 1582 ms 58944 KB
38.txt WA 1355 ms 61752 KB
39.txt WA 1332 ms 59600 KB
40.txt WA 1575 ms 62940 KB
41.txt WA 1068 ms 47888 KB
42.txt AC 788 ms 37256 KB
43.txt AC 575 ms 33688 KB
44.txt WA 1248 ms 55076 KB
45.txt WA 1103 ms 49740 KB
46.txt AC 918 ms 44620 KB
47.txt WA 746 ms 37424 KB
48.txt AC 503 ms 28656 KB
49.txt WA 1266 ms 55076 KB
50.txt AC 1078 ms 50696 KB
51.txt WA 1342 ms 61348 KB
52.txt WA 1372 ms 61496 KB
53.txt WA 1351 ms 62172 KB
54.txt WA 1358 ms 62488 KB
55.txt WA 1484 ms 62252 KB
56.txt WA 1556 ms 59692 KB
57.txt WA 1416 ms 62024 KB
58.txt WA 1441 ms 61584 KB
59.txt WA 1347 ms 62308 KB
60.txt WA 1358 ms 61068 KB
dekai1.txt WA 1401 ms 49516 KB
dekai2.txt WA 1423 ms 55196 KB
sample1.txt AC 527 ms 31460 KB
sample2.txt AC 573 ms 32496 KB
sample3.txt AC 496 ms 26192 KB
small01.txt WA 833 ms 38008 KB
small02.txt AC 671 ms 36724 KB
small03.txt AC 889 ms 44360 KB
small04.txt WA 732 ms 36928 KB
small05.txt AC 511 ms 25756 KB
small06.txt WA 791 ms 38116 KB
small07.txt AC 605 ms 33312 KB
small08.txt AC 885 ms 42760 KB
small09.txt WA 704 ms 37288 KB
small10.txt AC 928 ms 42180 KB
small11.txt WA 773 ms 37608 KB
small12.txt WA 590 ms 32952 KB
small13.txt WA 849 ms 37736 KB
small14.txt AC 678 ms 37692 KB
small15.txt WA 925 ms 42588 KB
small16.txt WA 739 ms 37024 KB
small17.txt AC 519 ms 25696 KB
small18.txt AC 808 ms 38088 KB
small19.txt WA 610 ms 35840 KB
small20.txt AC 888 ms 42400 KB
small21.txt AC 698 ms 36620 KB
small22.txt WA 917 ms 45036 KB
small23.txt WA 760 ms 37228 KB
small24.txt AC 573 ms 32904 KB
small25.txt WA 859 ms 37396 KB
yabame1.txt WA 1436 ms 61324 KB
yabame2.txt WA 1465 ms 61984 KB
yabame3.txt WA 1330 ms 61492 KB
yabame4.txt WA 1338 ms 61520 KB