UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#198062#3456. 跑步比赛Simon1003100870ms2816kbC++1.3kb2023-11-19 14:20:382023-11-19 16:07:52

answer

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int v[N], w[N], n;
bool cmp1(int i, int j) 
{
   return w[i] > w[j];
}
bool cmp2(int i, int j) 
{
    return (v[i] + w[i]) > (v[j] + w[j]);
}
bool check(long long mid) 
{
    vector<int> zhong, gei;
    for (int i = 1; i <= n; i++) 
	{
        if (v[i] < mid) 
		{
			zhong.push_back(i);
		}
        else 
		{
			gei.push_back(i);
		}
    }
    if (zhong.size() > gei.size()) 
	{
		return false;
	}
    sort(zhong.begin(), zhong.end(),cmp1);
    sort(gei.begin(), gei.end(),cmp2);
    for (int i = 0; i < zhong.size(); i++) 
	{
        int x = v[gei[i]] - (w[zhong[i]] - w[gei[i]]);
        if (x < mid) 
		{
			return false;
		}
    }
    return true;
}

void solve() {
    cin>>n;
    for (int i = 1; i <= n; i++) {
    	cin>>v[i]>>w[i];
    }
    int l = 1, r = *max_element(v + 1, v + 1 + n);
    while (l < r) 
	{
        long long mid = (l + r + 1) >> 1;
        if (check(mid)) {
            l = mid;
        } else {
            r = mid - 1;
        }
    }
    printf("%d\n", l);
}

int main() {
//	freopen("int.txt","r",stdin);
//	freopen("12345.txt","w",stdout);
    int t;
    cin>>t;
    while (t--) {
        solve();
    }      
    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1240kb

input:

1
10
266993 706803678
802362985 892644371
953855359 196462821
817301757 409460796
773943961 48876395...

output:

555904242

result:

ok single line: '555904242'

Test #2:

score: 10
Accepted
time: 0ms
memory: 1244kb

input:

1
10
46 15
50 98
93 77
31 43
84 90
6 24
14 37
73 29
43 9
4 8

output:

46

result:

ok single line: '46'

Test #3:

score: 10
Accepted
time: 3ms
memory: 1248kb

input:

20
300
538289667 450937378
534888897 527066716
80798460 335568208
947853348 207336428
510842953 1625...

output:

505659071
550791327
628691185
463559292
127705784
468121697
411937181
435008942
421342654
510493557
...

result:

ok 20 lines

Test #4:

score: 10
Accepted
time: 2ms
memory: 1248kb

input:

20
83
8 14
31 91
97 72
23 73
68 70
51 78
2 19
10 38
11 16
19 64
97 47
43 65
28 88
63 50
49 23
28 37
...

output:

44
58
46
64
57
64
43
66
46
52
57
61
46
53
73
39
53
54
42
43

result:

ok 20 lines

Test #5:

score: 10
Accepted
time: 0ms
memory: 1260kb

input:

1
1000
93 758062633
88 981601925
22 28054989
72 269036456
41 161626551
15 521363191
3 244982120
50 2...

output:

20

result:

ok single line: '20'

Test #6:

score: 10
Accepted
time: 0ms
memory: 1260kb

input:

1
1000
223444244 49
154763608 49
914282513 57
594690778 49
46129939 20
592083152 16
459436308 39
650...

output:

534391186

result:

ok single line: '534391186'

Test #7:

score: 10
Accepted
time: 345ms
memory: 2056kb

input:

2
53954
706803678 802362985
892644371 953855359
196462821 817301757
409460796 773943961
488763959 40...

output:

497979099
497530880

result:

ok 2 lines

Test #8:

score: 10
Accepted
time: 86ms
memory: 2008kb

input:

2
34643
15 50
98 93
77 31
43 84
90 6
24 14
37 73
29 43
9 4
8 14
31 91
97 72
23 73
68 70
51 78
2 19
1...

output:

50
50

result:

ok 2 lines

Test #9:

score: 10
Accepted
time: 155ms
memory: 2744kb

input:

1
100000
93 758062633
88 981601925
22 28054989
72 269036456
41 161626551
15 521363191
3 244982120
50...

output:

23

result:

ok single line: '23'

Test #10:

score: 10
Accepted
time: 279ms
memory: 2816kb

input:

1
100000
223444244 49
154763608 49
914282513 57
594690778 49
46129939 20
592083152 16
459436308 39
6...

output:

499790184

result:

ok single line: '499790184'

Extra Test:

score: 0
Extra Test Passed