判断 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 */

 

你可能感兴趣的:(in)