Submission details
Task:Call a Cab
Sender:Game of Nolife
Submission time:2015-11-25 21:26:47 +0200
Language:C++
Status:READY
Result:
Test results
testverdicttime
#10.06 sdetails
#2--details
#32.20 sdetails
#4ACCEPTED0.06 sdetails
#50.05 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.71 sdetails
#8--details
#91.46 sdetails
#10--details
#11--details

Code

#include <bits/stdc++.h>
#define F first
#define S second
using namespace std;
typedef long long ll;
typedef long double ld;

int dp[101010];
ll dm[101010];
ll hr[101010];
ll d[101010];
ll h[101010];

ll inf=1e18;
int inf2=1e9;

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int t,n;
	cin>>t>>n;
	for (int i=0;i<t;i++){
		cin>>dm[i]>>hr[i];
	}
	for (int i=1;i<n;i++){
		cin>>d[i]>>h[i];
		dp[i]=inf2;
	}
	dp[0]=0;
	for (int i=0;i<n-1;i++){
		for (int j=0;j<t;j++){
			ll td=0;
			ll ks=0;
			ll mik=inf;
			ll mak=-inf;
			for (int a=i+1;a<n;a++){
				td+=d[a];
				ks=h[a];
				mik=min(mik, ks);
				mak=max(mak, ks);
				//cout<<mik<<" mima "<<mak<<endl;
				if (mak-mik<=hr[j]&&td>=dm[j]){
					//cout<<i<<" "<<a<<endl;
					dp[a]=min(dp[a], dp[i]+1);
				}
			}
		}
	}
	if (dp[n-1]<inf2){
		cout<<dp[n-1]<<endl;
	}
	else{
		cout<<"IMPOSSIBLE"<<endl;
	}
}

Test details

Test 1

Verdict:

input
100 400
791 14000
114 90000
315 24000
263 64000
...

correct output
38

user output
1

Test 2

Verdict:

input
200 20000
8054 12000
5906 25000
694 10000
6154 33000
...

correct output
10

user output
(empty)

Test 3

Verdict:

input
5 19999
29 310000
30 27000
15 24000
47 29000
...

correct output
329

user output
1

Test 4

Verdict: ACCEPTED

input
20 990
9 48000
12 12000
50 47000
32 43000
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 5

Verdict:

input
2 7
4 6000
35 150000
2 2000
2 2000
...

correct output
2

user output
1

Test 6

Verdict: ACCEPTED

input
1 2
1000 359000
999 170000

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 7

Verdict: ACCEPTED

input
2 19225
4 6000
35 150000
2 2000
2 2000
...

correct output
7209

user output
7209

Test 8

Verdict:

input
20 19994
64104 18485
76684 42914
9274 32600
62514 5429
...

correct output
7436

user output
(empty)

Test 9

Verdict:

input
4 19991
44888 26641
8529 28990
32092 26053
3517 46793
...

correct output
6510

user output
IMPOSSIBLE

Test 10

Verdict:

input
200 49982
53794 19371
61913 14454
27602 37952
95478 10677
...

correct output
15082

user output
(empty)

Test 11

Verdict:

input
200 50000
11051 7334
85759 12058
95157 12080
87226 41381
...

correct output
49999

user output
(empty)