QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#600906#9221. Missing BoundariesFlowRaysWA 96ms17248kbC++239.3kb2024-09-29 19:54:582024-09-29 19:54:58

Judging History

你现在查看的是最新测评结果

  • [2024-09-29 19:54:58]
  • 评测
  • 测评结果:WA
  • 用时:96ms
  • 内存:17248kb
  • [2024-09-29 19:54:58]
  • 提交

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'