判断 Gym 100502K Train Passengers

 

题目传送门

 1 /*
 2     题意:几个判断,车上的人不能 <0 或 > C;车上初始和结束都不能有人在 (为0);车上满员时才有等候的人
 3     水题:难点在于读懂题目意思,状态不佳,一直没搞懂意思,在这题卡住了
 4         主要要理解have to wait 的意思
 5 */
 6 #include <cstdio>
 7 #include <iostream>
 8 #include <algorithm>
 9 #include <cstring>
10 #include <string>
11 #include <cmath>
12 #include <set>
13 #include <map>
14 #include <queue>
15 using namespace std;
16 
17 const int MAXN = 1e2 + 10;
18 const int INF = 0x3f3f3f3f;
19 int l[MAXN], e[MAXN], w[MAXN];
20 
21 int main(void)        //Gym 100502K Train Passengers
22 {
23     //freopen ("K.in", "r", stdin);
24 
25     int C, n;
26 
27     while (scanf ("%d%d", &C, &n) == 2)
28     {
29         int i;
30         for (i=1; i<=n; ++i)
31         {
32             scanf ("%d%d%d", &l[i], &e[i], &w[i]);
33         }
34         long long sum = 0;
35         for (i=1; i<=n; ++i)
36         {
37             if (i == n && w[i] > 0)    {puts ("impossible");    break;};
38             sum -= l[i];
39             if (sum < 0 || sum > C)    {puts ("impossible");    break;};
40             sum += e[i];
41             if (sum < 0 || sum > C)    {puts ("impossible");    break;};
42             if (w[i] > 0 && sum < C)    {puts ("impossible");    break;};        //当时没理解题意,写不出来:)
43         }
44 
45         if (i > n)
46         {
47             if (sum != 0)    puts ("impossible");
48             else    puts ("possible");
49         }
50     }
51 
52     return 0;
53 }
54 
55 /*
56 impossible
57 possible
58 */

 

posted @ 2015-04-22 20:04  Running_Time  阅读(270)  评论(0编辑  收藏  举报