QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#600906 | #9221. Missing Boundaries | FlowRays | WA | 96ms | 17248kb | C++23 | 9.3kb | 2024-09-29 19:54:58 | 2024-09-29 19:54:58 |
Judging History
answer
#include <bits/stdc++.h>
#define forn(i, n) for (int i = 0; i < int(n); i++)
#define fore(i, l, r) for (int i = int(l); i <= int(r); ++i)
#define all(x) x.begin(),x.end()
#define pb push_back
#define eb emplace_back
#define fi first
#define se second
#define ve vector
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using vi = vector<int>;
using vii = vector<vector<int>>;
using vpi = vector<vector<pii>>;
const int inf = 0x3f3f3f3f;
const int mod = 998244353;
const int N = 2e5+10;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
#define FIO
struct IO {
#ifdef FIO
const static int BUFSIZE = 1 << 20; char buf[BUFSIZE], obuf[BUFSIZE], *p1, *p2, *pp; inline char getchar() { return (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, BUFSIZE, stdin), p1 == p2) ? EOF : *p1++); } inline void putchar(char x) { ((pp - obuf == BUFSIZE && (fwrite(obuf, 1, BUFSIZE, stdout), pp = obuf)), *pp = x, pp++); } inline IO &flush() { fwrite(obuf, 1, pp - obuf, stdout); fflush(stdout); return *this; } IO() { p1 = buf, p2 = buf, pp = obuf; } ~IO() { flush(); }
#else
int (*getchar)() = &::getchar; int (*putchar)(int) = &::putchar; inline IO &flush() { fflush(stdout); return *this; };
#endif
string sep = " "; int k = 2; template <typename T, typename std::enable_if<std::is_integral<T>::value || std::is_same<T, __int128_t>::value>::type * = nullptr> inline int r(T &s) { int f = 1; char ch = getchar(); s = 0; while (!isdigit(ch) && ch != EOF) f = (ch == '-' ? -1 : 1), ch = getchar(); while (isdigit(ch)) s = s * 10 + (ch ^ 48), ch = getchar(); s *= f; return ch != EOF; } template <typename T> inline bool r(vector<T> &v) { bool f = true; for(auto &x: v) f &= r(x); return f; } template <typename T> inline bool rv(vector<T> &v, int x = 1) { bool f = true; for (int i = x; i < v.size(); ++i) f &= r(v[i]); return f; } template <typename T, typename enable_if<is_floating_point<T>::value>::type * = nullptr> inline int r(T &s) { int f = 1; char ch = getchar(); s = 0; while (!isdigit(ch) && ch != EOF && ch != '.') f = (ch == '-' ? -1 : 1), ch = getchar(); while (isdigit(ch)) s = s * 10 + (ch ^ 48), ch = getchar(); if (ch == EOF) return false; if (ch == '.') { T eps = 0.1; ch = getchar(); while (isdigit(ch)) s = s + (ch ^ 48) * eps, ch = getchar(), eps /= 10; } s *= f; return ch != EOF; } inline int r(char &c) { char ch = getchar(); c = EOF; while (isspace(ch) && ch != EOF) ch = getchar(); if (ch != EOF) c = ch; return c != EOF; } inline int r(char *c) { char ch = getchar(), *s = c; while (isspace(ch) && ch != EOF) ch = getchar(); while (!isspace(ch) && ch != EOF) *(c++) = ch, ch = getchar(); *c = '\0'; return s != c; } inline int r(string &s) { s.clear(); char ch = getchar(); while (isspace(ch) && ch != EOF) ch = getchar(); while (!isspace(ch) && ch != EOF) s += ch, ch = getchar(); return s.size() > 0; } inline int getline(char *c, const char &ed = '\n') { char ch = getchar(), *s = c; while (ch != ed && ch != EOF) *(c++) = ch, ch = getchar(); *c = '\0'; return s != c; } inline int getline(string &s, const char &ed = '\n') { s.clear(); char ch = getchar(); while (ch != ed && ch != EOF) s += ch, ch = getchar(); return s.size() > 0; } template <typename T = int> inline T r() { T x; r(x); return x; } template <typename T, typename... Ts> int r(T &x, Ts &...val) { return r(x) && r(val...); } template <typename T, typename enable_if<is_integral<T>::value>::type * = nullptr> IO &w(T x) { if (x < 0) putchar('-'), x = -x; static char sta[20]; int top = 0; do sta[top++] = x % 10 + '0', x /= 10; while (x); while (top) putchar(sta[--top]); return *this; } inline IO &w(const string &str) { for (char ch : str) putchar(ch); return *this; } inline IO &w(const char *str) { while (*str != '\0') putchar(*(str++)); return *this; } inline IO &w(char *str) { return w((const char *)str); } inline IO &w(const char &ch) { return putchar(ch), *this; } template <typename T, typename enable_if<is_floating_point<T>::value>::type * = nullptr> inline IO &w(T x) { if (x > 1e18 || x < -1e18) { w("[Floating point overflow]"); throw; } if (x < 0) putchar('-'), x = -x; const static long long pow10[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000, 1000000000000000, 10000000000000000, 100000000000000000, 100000000000000000, 100000000000000000}; const auto &n = pow10[k]; long long whole = (int)x; double tmp = (x - whole) * n; long long frac = tmp; double diff = tmp - frac; if (diff > 0.5) { ++frac; if (frac >= n) frac = 0, ++whole; } else if (diff == 0.5 && ((frac == 0U) || (frac & 1U))) ++frac; w(whole); if (k == 0U) { diff = x - (double)whole; if ((!(diff < 0.5) || (diff > 0.5)) && (whole & 1)) ++whole; } else { putchar('.'); static char sta[20]; int count = k, top = 0; while (frac) { sta[top++] = frac % 10 + '0'; frac /= 10, count--; } while (count--) putchar('0'); while (top) putchar(sta[--top]); } return *this; } template <typename T> inline IO &w(vector<T> &v) { bool f = true; for(auto x: v) { if (f) f = false; else w(sep); w(x); }; return *this; } template <typename T> inline IO &wv(vector<T> &v,int x = 1) { bool f = true; for (int i = x; i < v.size(); ++i) { if (f) f = false; else w(sep); w(v[i]); }; wl(); return *this; } template <typename T, typename... Ts> inline IO &w(T x, Ts... val) { w(x); w(sep); w(val...); return *this; } template <typename... Ts> inline IO &wl(Ts... val) { w(val...); putchar('\n'); return *this; } inline IO &wl(void) { putchar('\n'); return *this; } template <typename T> inline IO &ww(T x, const string &s = " ") { w(x), w(s); return *this; } inline IO &ss(const string &s) { return sep = s, *this; } inline IO &sp(const int &K) { return k = K, *this; }
} io;
struct ER {
#define debug(x...) cerr << "Line " << __LINE__ << ": " #x " = "; er.wl(x)
#define debug_assert(a, x...) if (not(a)) { cerr << "Line " << __LINE__ << ": Assertion `" #a "` failed." << endl; cerr << #x " = "; er.wl(x); exit(0);}
string sep = " "; template <typename T, typename enable_if<is_integral<T>::value>::type * = nullptr> ER &w(T x) { cerr << x; return *this; } inline ER &w(const string &str) { cerr << str; return *this; } inline ER &w(const char *str) { cerr << str; return *this; } inline ER &w(char *str) { return w((const char *)str); } inline ER &w(const char &ch) { cerr << ch; return *this; } template <typename T, typename enable_if<is_floating_point<T>::value>::type * = nullptr> inline ER &w(T x) { cerr << x; return *this; } template <typename A, typename B> inline ER &w(pair<A, B> x) { cerr << "("; w(x.fi); cerr << ", "; w(x.se); cerr << ")"; return *this; } template <typename T, size_t N> inline ER &w(array<T, N> &a) { cerr << "["; bool first = true; for (auto &v : a) { cerr << (first ? "" : ", "); w(v); first = 0; } cerr << "]"; return *this; } template <typename T> inline ER &w(vector<T> &x) { cerr << "["; bool first = true; for (auto &v : x) { cerr << (first ? "" : ", "); w(v); first = 0; } cerr << "]"; return *this; } template <typename T, class Cmp> inline ER &w(set<T, Cmp> &x) { cerr << "{"; bool first = true; for (auto &v : x) { cerr << (first ? "" : ", "); w(v); first = 0; } cerr << "}"; return *this; } template <typename T, class Cmp> inline ER &w(multiset<T, Cmp> &x) { cerr << "{"; bool first = true; for (auto &v : x) { cerr << (first ? "" : ", "); w(v); first = 0; } cerr << "}"; return *this; } template <typename A, typename B, class Cmp> inline ER &w(map<A, B, Cmp> &x) { cerr << "{"; bool first = true; for (auto &[a, b] : x) { cerr << (first ? "" : ", "); w(a); cerr << ": "; w(b); first = 0; } cerr << "}"; return *this; } template <typename T, typename... Ts> inline ER &w(T x, Ts... val) { w(x); w(sep); w(val...); return *this; } template <typename... Ts> inline ER &wl(Ts... val) { w(val...); cerr << endl; return *this; } inline ER &wl(void) { cerr << endl; return *this; } template <typename T> inline ER &ww(T x, const string &s = " ") { w(x), w(s); return *this; } inline ER &ss(const string &s) { return sep = s, *this; } inline ER &sp(const int &K) { cerr << fixed << setprecision(K); return *this; }
} er;
void solve(){
int n,L;
io.r(n,L);
int cnt = 0;
set<array<int,3>> st;
forn(i,n) {
int l,r;
io.r(l,r);
if(l != -1 && r != -1) {
st.insert({l,r,0});
} else if(l != -1 && r == -1) {
st.insert({l,l,2});
} else if(l == -1 && r != -1) {
st.insert({r,r,1});
} else {
cnt++;
}
}
int need = 0, have = 0;
int pl = -1, pr = -1, pt = -1;
for(auto [l,r,t]: st) {
if(pl == -1) {
if(t == 1) {
have += l-1;
} else {
if(l != 1) {
need++;
}
}
} else {
if(l <= pr) {
io.wl("NIE");
return;
}
if(t == 1) {
have += l-1-(pr+1)+1;
} else {
if(l != pr+1 && pt != 2) {
need++;
}
}
}
pl = l, pr = r, pt = t;
}
if(pr != L && pt != 2) need++;
if(cnt >= need && have >= cnt) io.wl("TAK");
else io.wl("NIE");
}
int main() {
int tt;
io.r(tt);
while (tt--) {
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3800kb
input:
3 4 51 1 -1 11 50 -1 -1 -1 10 3 2 -1 -1 -1 -1 -1 -1 2 3 1 2 2 3
output:
TAK NIE NIE
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 96ms
memory: 17248kb
input:
1 200000 1000000000 490669427 -1 224278942 224287156 821104480 -1 861696576 861702036 807438935 807440055 574078002 574083717 465630141 -1 195378188 -1 -1 13500961 -1 977536179 92893115 -1 -1 661145418 -1 215804863 -1 685338515 544348999 -1 465532902 -1 130346949 -1 -1 526666304 635604584 635605404 ...
output:
TAK
result:
ok single line: 'TAK'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3732kb
input:
3 4 51 1 -1 11 50 -1 -1 -1 10 3 2 -1 -1 -1 -1 -1 -1 2 3 1 2 2 3
output:
TAK NIE NIE
result:
ok 3 lines
Test #4:
score: 0
Accepted
time: 74ms
memory: 14852kb
input:
1 197838 400000 34167 34169 352180 -1 235963 -1 -1 -1 160401 160405 347288 -1 270353 270354 214502 214504 183243 183245 -1 -1 -1 36193 -1 -1 -1 17557 273498 273500 269137 -1 395099 395100 285515 285518 -1 -1 71041 71042 324060 -1 -1 385151 -1 379645 -1 -1 -1 185142 -1 191584 89259 89261 328347 32834...
output:
TAK
result:
ok single line: 'TAK'
Test #5:
score: 0
Accepted
time: 41ms
memory: 8932kb
input:
2 97340 150000 -1 101927 105937 -1 -1 107253 -1 47307 110550 -1 84061 84062 125176 125177 -1 15915 29617 -1 -1 -1 -1 43147 115958 -1 101807 101808 24866 -1 66826 66828 -1 31640 -1 5610 1281 1284 -1 -1 -1 -1 -1 73973 -1 2945 29064 -1 30653 -1 -1 63714 -1 -1 141389 141390 -1 27465 57358 -1 47388 47389...
output:
NIE NIE
result:
ok 2 lines
Test #6:
score: 0
Accepted
time: 57ms
memory: 7624kb
input:
4 50000 50000 11702 -1 -1 3148 30364 -1 48876 -1 -1 10739 -1 44459 11634 -1 39348 -1 38829 -1 16182 -1 37933 -1 35295 -1 43280 -1 37745 -1 -1 40076 358 -1 14043 -1 13975 -1 41942 -1 -1 13182 14780 -1 -1 14663 3998 -1 -1 24474 -1 6583 -1 9620 -1 37944 12103 -1 8307 -1 45760 -1 -1 2924 25441 -1 -1 194...
output:
TAK NIE NIE NIE
result:
ok 4 lines
Test #7:
score: 0
Accepted
time: 63ms
memory: 14940kb
input:
1 197884 400000 299276 299281 340251 -1 -1 350350 315166 -1 103436 103438 164740 164742 237539 -1 383864 -1 205194 -1 -1 -1 69029 69030 -1 -1 231837 231838 35835 35837 387743 -1 125024 -1 -1 -1 -1 -1 -1 -1 -1 283202 94212 94213 219223 219224 -1 -1 -1 139549 260062 -1 387170 387173 -1 328548 -1 -1 -1...
output:
NIE
result:
ok single line: 'NIE'
Test #8:
score: 0
Accepted
time: 37ms
memory: 8992kb
input:
2 97399 150000 -1 -1 97327 97328 94010 94011 72148 -1 -1 28604 -1 -1 139279 -1 -1 -1 67725 67726 93094 -1 -1 10828 37742 -1 69460 -1 -1 -1 -1 -1 80200 80202 126739 -1 131808 131810 -1 13390 -1 -1 141120 141121 127549 -1 -1 -1 -1 -1 66081 -1 100916 100918 -1 -1 25966 -1 47034 47036 101842 -1 -1 -1 -1...
output:
NIE NIE
result:
ok 2 lines
Test #9:
score: 0
Accepted
time: 54ms
memory: 7772kb
input:
4 50000 1000000000 218423429 -1 593054951 -1 345188314 -1 839833278 -1 -1 253444951 -1 532444671 -1 866445317 -1 476576639 -1 950754898 -1 735671066 71213664 -1 -1 363816338 -1 451093114 487349837 -1 -1 987865563 672130428 -1 -1 313206174 -1 311825154 -1 209018142 836501057 -1 -1 387134322 -1 939803...
output:
NIE NIE TAK NIE
result:
ok 4 lines
Test #10:
score: 0
Accepted
time: 45ms
memory: 8984kb
input:
2 97206 150000 41741 41742 -1 -1 29609 29610 -1 -1 94303 94305 67375 -1 84593 84597 -1 -1 97516 97517 -1 -1 110718 -1 129532 129533 -1 74454 -1 145160 118122 -1 -1 -1 -1 131430 -1 -1 77307 -1 -1 -1 35606 35607 -1 -1 77284 77286 84225 -1 82910 82911 55414 55418 -1 145197 -1 -1 -1 41997 41620 41621 16...
output:
NIE NIE
result:
ok 2 lines
Test #11:
score: 0
Accepted
time: 58ms
memory: 14016kb
input:
1 200000 1000000000 -1 -1 709526131 709534689 820094363 820094954 -1 558894593 253939639 253940489 755238142 -1 356834271 -1 720874328 -1 -1 797706622 -1 -1 877671011 877674221 9379767 9379808 152611373 -1 -1 584054839 -1 28003439 137254045 -1 -1 -1 -1 -1 -1 371861650 -1 -1 898245136 -1 610262985 61...
output:
TAK
result:
ok single line: 'TAK'
Test #12:
score: -100
Wrong Answer
time: 13ms
memory: 4900kb
input:
30000 6 9 -1 -1 -1 5 7 8 -1 2 -1 -1 3 -1 8 10 -1 -1 2 4 8 -1 -1 -1 3 6 2 10 -1 -1 -1 -1 5 10 7 -1 7 -1 -1 -1 -1 -1 -1 10 5 7 4 5 -1 -1 4 -1 -1 7 -1 4 9 10 -1 -1 -1 -1 8 9 9 -1 5 -1 -1 -1 -1 2 4 9 3 7 3 5 5 -1 3 3 -1 3 10 10 5 -1 1 3 -1 6 4 7 -1 5 2 -1 6 8 -1 9 7 -1 2 -1 1 6 3 -1 9 9 5 8 -1 4 1 3 8 9...
output:
TAK NIE TAK NIE NIE NIE NIE NIE NIE NIE TAK NIE NIE NIE NIE NIE NIE NIE TAK NIE NIE NIE NIE NIE NIE NIE NIE NIE TAK NIE NIE TAK NIE NIE NIE TAK NIE NIE NIE NIE NIE TAK NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE TAK NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE TAK NIE NIE ...
result:
wrong answer 3rd lines differ - expected: 'NIE', found: 'TAK'