Task: | Compensation |
Sender: | Game of Nolife |
Submission time: | 2016-11-12 15:07:48 +0200 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.06 s | details |
#2 | ACCEPTED | 0.07 s | details |
#3 | ACCEPTED | 0.06 s | details |
#4 | ACCEPTED | 0.05 s | details |
#5 | ACCEPTED | 0.09 s | details |
#6 | ACCEPTED | 0.10 s | details |
#7 | ACCEPTED | 0.08 s | details |
#8 | ACCEPTED | 0.10 s | details |
#9 | ACCEPTED | 0.10 s | details |
#10 | ACCEPTED | 0.05 s | details |
#11 | ACCEPTED | 0.06 s | details |
#12 | ACCEPTED | 0.06 s | details |
#13 | ACCEPTED | 0.06 s | details |
#14 | ACCEPTED | 0.06 s | details |
#15 | ACCEPTED | 0.07 s | details |
#16 | ACCEPTED | 0.05 s | details |
#17 | ACCEPTED | 0.06 s | details |
Code
#include <bits/stdc++.h> #define F first #define S second #define X real() #define Y imag() using namespace std; typedef long long ll; typedef long double ld; const int inf=1e8; int cb[101010]; int vv[101010][2]; vector<pair<int, int> > go[111]; vector<int> arr[111]; int n,m; void solve(int ttt, vector<pair<int, pair<int, int> > > s){ for (int i=1;i<=n;i++){ go[i].clear(); arr[i].clear(); } for (auto ss:s){ go[ss.F].push_back(ss.S); } for (int i=1;i<=n;i++){ sort(go[i].begin(), go[i].end()); arr[i].resize(go[i].size()); } for (int i=(int)go[n-1].size()-1;i>=0;i--){ arr[n-1][i]=go[n-1][i].S; if (i+1<(int)go[n-1].size()){ arr[n-1][i]=min(arr[n-1][i], arr[n-1][i+1]); } } for (int i=n-2;i>=1;i--){ for (int j=(int)go[i].size()-1;j>=0;j--){ pair<int, int> asdf={go[i][j].S, 0}; int id=lower_bound(go[i+1].begin(), go[i+1].end(), asdf)-go[i+1].begin(); if (id>=(int)go[i+1].size()){ arr[i][j]=inf; } else{ arr[i][j]=arr[i+1][id]; } if (j+1<(int)go[i].size()){ arr[i][j]=min(arr[i][j], arr[i][j+1]); } } } int i2=(int)go[1].size()-1; int mv=inf; for (int i=90000;i>=0;i--){ while (i2>=0&&go[1][i2].F>=i){ mv=min(mv, arr[1][i2]); i2--; } vv[i][ttt]=mv; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>m; vector<pair<int, pair<int, int> > > s1; vector<pair<int, pair<int, int> > > s2; for (int i=0;i<m;i++){ int x,s,t,l; cin>>x>>s>>t>>l; if (x==1) cb[s]=1; s1.push_back({x, {s, t}}); s2.push_back({x, {s+l, t+l}}); } solve(0, s1); solve(1, s2); for (int i=0;i<=90000;i++){ if (cb[i]&&vv[i][0]+1800<=vv[i][1]){ cout<<i<<endl; return 0; } } cout<<"impossible"<<endl; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
5 35 1 51823 82363 59890 2 31739 66068 17641 3 30445 42417 77902 4 49150 49816 22049 ... |
correct output |
---|
3895 |
user output |
---|
3895 |
Test 2
Verdict: ACCEPTED
input |
---|
99 10000 1 5192 5289 0 2 960 983 400 3 1087 1162 225 4 2324 2423 144 ... |
correct output |
---|
5112 |
user output |
---|
5112 |
Test 3
Verdict: ACCEPTED
input |
---|
87 10000 1 6166 6263 0 2 965 1061 256 3 5919 5962 361 4 2910 2933 196 ... |
correct output |
---|
6295 |
user output |
---|
6295 |
Test 4
Verdict: ACCEPTED
input |
---|
94 10000 1 5267 5267 0 2 5905 5944 484 3 2288 2344 144 4 3497 3548 100 ... |
correct output |
---|
5160 |
user output |
---|
5160 |
Test 5
Verdict: ACCEPTED
input |
---|
97 100000 1 5149 5174 0 2 1956 1990 5476 3 3370 3415 6400 4 3032 3068 5329 ... |
correct output |
---|
103 |
user output |
---|
103 |
Test 6
Verdict: ACCEPTED
input |
---|
87 100000 1 4897 4919 0 2 4428 4482 0 3 7124 7139 0 4 6095 6127 0 ... |
correct output |
---|
801 |
user output |
---|
801 |
Test 7
Verdict: ACCEPTED
input |
---|
96 100000 1 5415 5475 0 2 5982 5992 0 3 8410 8422 0 4 7595 7911 0 ... |
correct output |
---|
805 |
user output |
---|
805 |
Test 8
Verdict: ACCEPTED
input |
---|
90 100000 1 37420 38418 1 2 68502 69942 1 1 346 531 1 4 28145 29746 1 ... |
correct output |
---|
impossible |
user output |
---|
impossible |
Test 9
Verdict: ACCEPTED
input |
---|
90 100000 1 83900 85801 1 2 72188 73458 1 1 57291 58966 1 4 69743 70728 1 ... |
correct output |
---|
impossible |
user output |
---|
impossible |
Test 10
Verdict: ACCEPTED
input |
---|
5 35 1 27333 80262 47834 2 40841 56209 66265 3 37689 85312 74945 4 12123 67360 36187 ... |
correct output |
---|
10007 |
user output |
---|
10007 |
Test 11
Verdict: ACCEPTED
input |
---|
5 35 1 86335 86357 66676 2 4816 76697 68528 3 56889 83733 65118 4 22002 36999 16872 ... |
correct output |
---|
3992 |
user output |
---|
3992 |
Test 12
Verdict: ACCEPTED
input |
---|
99 31747 1 2566 2662 0 2 2938 2958 1024 3 4031 4053 2809 4 1631 1695 5476 ... |
correct output |
---|
4339 |
user output |
---|
4339 |
Test 13
Verdict: ACCEPTED
input |
---|
94 7549 1 2191 2258 0 2 1326 1348 6084 3 1358 1367 6241 4 2085 2095 4624 ... |
correct output |
---|
282 |
user output |
---|
282 |
Test 14
Verdict: ACCEPTED
input |
---|
82 35612 1 2868 2919 0 2 3794 3894 6400 3 1142 1199 361 4 2495 2519 289 ... |
correct output |
---|
impossible |
user output |
---|
impossible |
Test 15
Verdict: ACCEPTED
input |
---|
88 22965 1 4820 4918 0 2 1243 1332 625 3 895 994 2025 4 1894 1934 2601 ... |
correct output |
---|
128 |
user output |
---|
128 |
Test 16
Verdict: ACCEPTED
input |
---|
88 10000 1 750 761 0 2 5784 5825 144 3 5981 6044 289 4 724 743 400 ... |
correct output |
---|
743 |
user output |
---|
743 |
Test 17
Verdict: ACCEPTED
input |
---|
89 10000 1 4508 4554 0 2 2385 2470 361 3 314 320 225 4 2006 2034 625 ... |
correct output |
---|
6211 |
user output |
---|
6211 |