Submission #134397

# Submission time Handle Problem Language Result Execution time Memory
134397 2019-07-22T16:01:38 Z duality Bitaro’s Party (JOI18_bitaro) C++11
100 / 100
1602 ms 197060 KB
#define DEBUG 0

#include <bits/stdc++.h>
using namespace std;

#if DEBUG
// basic debugging macros
int __i__,__j__;
#define printLine(l) for(__i__=0;__i__<l;__i__++){cout<<"-";}cout<<endl
#define printLine2(l,c) for(__i__=0;__i__<l;__i__++){cout<<c;}cout<<endl
#define printVar(n) cout<<#n<<": "<<n<<endl
#define printArr(a,l) cout<<#a<<": ";for(__i__=0;__i__<l;__i__++){cout<<a[__i__]<<" ";}cout<<endl
#define print2dArr(a,r,c) cout<<#a<<":\n";for(__i__=0;__i__<r;__i__++){for(__j__=0;__j__<c;__j__++){cout<<a[__i__][__j__]<<" ";}cout<<endl;}
#define print2dArr2(a,r,c,l) cout<<#a<<":\n";for(__i__=0;__i__<r;__i__++){for(__j__=0;__j__<c;__j__++){cout<<setw(l)<<setfill(' ')<<a[__i__][__j__]<<" ";}cout<<endl;}

// advanced debugging class
// debug 1,2,'A',"test";
class _Debug {
    public:
        template<typename T>
        _Debug& operator,(T val) {
            cout << val << endl;
            return *this;
        }
};
#define debug _Debug(),
#else
#define printLine(l)
#define printLine2(l,c)
#define printVar(n)
#define printArr(a,l)
#define print2dArr(a,r,c)
#define print2dArr2(a,r,c,l)
#define debug
#endif

// define
#define MAX_VAL 999999999
#define MAX_VAL_2 999999999999999999LL
#define EPS 1e-6
#define mp make_pair
#define pb push_back

// typedef
typedef unsigned int UI;
typedef long long int LLI;
typedef unsigned long long int ULLI;
typedef unsigned short int US;
typedef pair<int,int> pii;
typedef pair<LLI,LLI> plli;
typedef vector<int> vi;
typedef vector<LLI> vlli;
typedef vector<pii> vpii;
typedef vector<plli> vplli;

// ---------- END OF TEMPLATE ----------

vi adjList[100000],C;
vpii best[100000];
int del[100000];
int dp[100000];
int main() {
    int i,j,k;
    int N,M,Q;
    int S,E,T,Y;
    scanf("%d %d %d",&N,&M,&Q);
    for (i = 0; i < M; i++) scanf("%d %d",&S,&E),adjList[E-1].pb(S-1);
    for (i = 0; i < N; i++) {
        best[i].pb(mp(0,i));
        for (j = 0; j < adjList[i].size(); j++) {
            int v = adjList[i][j];
            for (k = 0; k < best[v].size(); k++) best[i].pb(mp(best[v][k].first+1,best[v][k].second));
        }
        int c = 0;
        sort(best[i].begin(),best[i].end(),greater<pii>());
        for (j = 0; j < best[i].size(); j++) {
            if (!del[best[i][j].second]) best[i][c++] = best[i][j],del[best[i][j].second] = 1;
        }
        for (j = 0; j < c; j++) del[best[i][j].second] = 0;
        best[i].resize(min(80,c));
    }
    for (i = 0; i < Q; i++) {
        scanf("%d %d",&T,&Y),T--;
        C.resize(Y);
        for (j = 0; j < Y; j++) scanf("%d",&C[j]),C[j]--,del[C[j]] = 1;
        for (j = 0; j < best[T].size(); j++) {
            if (!del[best[T][j].second]) break;
        }
        if (j < best[T].size()) printf("%d\n",best[T][j].first);
        else {
            for (j = 0; j <= T; j++) {
                dp[j] = del[j] ? -1e9:0;
                for (k = 0; k < adjList[j].size(); k++) dp[j] = max(dp[j],dp[adjList[j][k]]+1);
            }
            printf("%d\n",(dp[T] < 0) ? -1:dp[T]);
        }
        for (j = 0; j < Y; j++) del[C[j]] = 0;
    }

    return 0;
}

Compilation message

bitaro.cpp: In function 'int main()':
bitaro.cpp:70:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (j = 0; j < adjList[i].size(); j++) {
                     ~~^~~~~~~~~~~~~~~~~~~
bitaro.cpp:72:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for (k = 0; k < best[v].size(); k++) best[i].pb(mp(best[v][k].first+1,best[v][k].second));
                         ~~^~~~~~~~~~~~~~~~
bitaro.cpp:76:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (j = 0; j < best[i].size(); j++) {
                     ~~^~~~~~~~~~~~~~~~
bitaro.cpp:86:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (j = 0; j < best[T].size(); j++) {
                     ~~^~~~~~~~~~~~~~~~
bitaro.cpp:89:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (j < best[T].size()) printf("%d\n",best[T][j].first);
             ~~^~~~~~~~~~~~~~~~
bitaro.cpp:93:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 for (k = 0; k < adjList[j].size(); k++) dp[j] = max(dp[j],dp[adjList[j][k]]+1);
                             ~~^~~~~~~~~~~~~~~~~~~
bitaro.cpp:66:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %d",&N,&M,&Q);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~
bitaro.cpp:67:49: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for (i = 0; i < M; i++) scanf("%d %d",&S,&E),adjList[E-1].pb(S-1);
                             ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
bitaro.cpp:83:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d",&T,&Y),T--;
         ~~~~~~~~~~~~~~~~~~~~^~~~
bitaro.cpp:85:57: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         for (j = 0; j < Y; j++) scanf("%d",&C[j]),C[j]--,del[C[j]] = 1;
                                 ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 6 ms 4984 KB Output is correct
2 Correct 6 ms 4984 KB Output is correct
3 Correct 6 ms 4984 KB Output is correct
4 Correct 6 ms 5112 KB Output is correct
5 Correct 11 ms 5624 KB Output is correct
6 Correct 11 ms 5752 KB Output is correct
7 Correct 11 ms 5624 KB Output is correct
8 Correct 14 ms 6776 KB Output is correct
9 Correct 14 ms 6776 KB Output is correct
10 Correct 13 ms 6776 KB Output is correct
11 Correct 15 ms 6648 KB Output is correct
12 Correct 13 ms 6108 KB Output is correct
13 Correct 15 ms 6648 KB Output is correct
14 Correct 14 ms 6136 KB Output is correct
15 Correct 12 ms 5904 KB Output is correct
16 Correct 13 ms 6136 KB Output is correct
17 Correct 14 ms 6264 KB Output is correct
18 Correct 12 ms 5880 KB Output is correct
19 Correct 14 ms 6264 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 4984 KB Output is correct
2 Correct 6 ms 4984 KB Output is correct
3 Correct 6 ms 4984 KB Output is correct
4 Correct 6 ms 5112 KB Output is correct
5 Correct 11 ms 5624 KB Output is correct
6 Correct 11 ms 5752 KB Output is correct
7 Correct 11 ms 5624 KB Output is correct
8 Correct 14 ms 6776 KB Output is correct
9 Correct 14 ms 6776 KB Output is correct
10 Correct 13 ms 6776 KB Output is correct
11 Correct 15 ms 6648 KB Output is correct
12 Correct 13 ms 6108 KB Output is correct
13 Correct 15 ms 6648 KB Output is correct
14 Correct 14 ms 6136 KB Output is correct
15 Correct 12 ms 5904 KB Output is correct
16 Correct 13 ms 6136 KB Output is correct
17 Correct 14 ms 6264 KB Output is correct
18 Correct 12 ms 5880 KB Output is correct
19 Correct 14 ms 6264 KB Output is correct
20 Correct 1453 ms 123464 KB Output is correct
21 Correct 1422 ms 123396 KB Output is correct
22 Correct 1455 ms 123100 KB Output is correct
23 Correct 1422 ms 129008 KB Output is correct
24 Correct 1045 ms 144376 KB Output is correct
25 Correct 1085 ms 148728 KB Output is correct
26 Correct 1097 ms 148472 KB Output is correct
27 Correct 767 ms 195632 KB Output is correct
28 Correct 768 ms 195712 KB Output is correct
29 Correct 767 ms 195960 KB Output is correct
30 Correct 850 ms 195448 KB Output is correct
31 Correct 997 ms 186700 KB Output is correct
32 Correct 824 ms 195704 KB Output is correct
33 Correct 756 ms 127108 KB Output is correct
34 Correct 764 ms 114140 KB Output is correct
35 Correct 754 ms 125944 KB Output is correct
36 Correct 970 ms 159864 KB Output is correct
37 Correct 1158 ms 147380 KB Output is correct
38 Correct 973 ms 160504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 4984 KB Output is correct
2 Correct 6 ms 4984 KB Output is correct
3 Correct 6 ms 4984 KB Output is correct
4 Correct 6 ms 5112 KB Output is correct
5 Correct 11 ms 5624 KB Output is correct
6 Correct 11 ms 5752 KB Output is correct
7 Correct 11 ms 5624 KB Output is correct
8 Correct 14 ms 6776 KB Output is correct
9 Correct 14 ms 6776 KB Output is correct
10 Correct 13 ms 6776 KB Output is correct
11 Correct 15 ms 6648 KB Output is correct
12 Correct 13 ms 6108 KB Output is correct
13 Correct 15 ms 6648 KB Output is correct
14 Correct 14 ms 6136 KB Output is correct
15 Correct 12 ms 5904 KB Output is correct
16 Correct 13 ms 6136 KB Output is correct
17 Correct 14 ms 6264 KB Output is correct
18 Correct 12 ms 5880 KB Output is correct
19 Correct 14 ms 6264 KB Output is correct
20 Correct 1453 ms 123464 KB Output is correct
21 Correct 1422 ms 123396 KB Output is correct
22 Correct 1455 ms 123100 KB Output is correct
23 Correct 1422 ms 129008 KB Output is correct
24 Correct 1045 ms 144376 KB Output is correct
25 Correct 1085 ms 148728 KB Output is correct
26 Correct 1097 ms 148472 KB Output is correct
27 Correct 767 ms 195632 KB Output is correct
28 Correct 768 ms 195712 KB Output is correct
29 Correct 767 ms 195960 KB Output is correct
30 Correct 850 ms 195448 KB Output is correct
31 Correct 997 ms 186700 KB Output is correct
32 Correct 824 ms 195704 KB Output is correct
33 Correct 756 ms 127108 KB Output is correct
34 Correct 764 ms 114140 KB Output is correct
35 Correct 754 ms 125944 KB Output is correct
36 Correct 970 ms 159864 KB Output is correct
37 Correct 1158 ms 147380 KB Output is correct
38 Correct 973 ms 160504 KB Output is correct
39 Correct 1166 ms 146432 KB Output is correct
40 Correct 1097 ms 148216 KB Output is correct
41 Correct 1089 ms 148600 KB Output is correct
42 Correct 1081 ms 147204 KB Output is correct
43 Correct 1081 ms 146464 KB Output is correct
44 Correct 1518 ms 124752 KB Output is correct
45 Correct 1483 ms 123892 KB Output is correct
46 Correct 1505 ms 123764 KB Output is correct
47 Correct 1458 ms 123760 KB Output is correct
48 Correct 1456 ms 123252 KB Output is correct
49 Correct 835 ms 196696 KB Output is correct
50 Correct 1413 ms 195856 KB Output is correct
51 Correct 1471 ms 124412 KB Output is correct
52 Correct 1536 ms 123936 KB Output is correct
53 Correct 1059 ms 160888 KB Output is correct
54 Correct 1050 ms 147956 KB Output is correct
55 Correct 1376 ms 160112 KB Output is correct
56 Correct 1016 ms 148348 KB Output is correct
57 Correct 1497 ms 124556 KB Output is correct
58 Correct 1515 ms 124656 KB Output is correct
59 Correct 1602 ms 123812 KB Output is correct
60 Correct 1589 ms 123652 KB Output is correct
61 Correct 879 ms 196220 KB Output is correct
62 Correct 1026 ms 160996 KB Output is correct
63 Correct 1090 ms 146676 KB Output is correct
64 Correct 994 ms 195768 KB Output is correct
65 Correct 1137 ms 160104 KB Output is correct
66 Correct 1002 ms 148084 KB Output is correct
67 Correct 1113 ms 196012 KB Output is correct
68 Correct 1246 ms 161032 KB Output is correct
69 Correct 977 ms 145896 KB Output is correct
70 Correct 815 ms 195832 KB Output is correct
71 Correct 968 ms 160928 KB Output is correct
72 Correct 1022 ms 147456 KB Output is correct
73 Correct 785 ms 196000 KB Output is correct
74 Correct 1000 ms 160548 KB Output is correct
75 Correct 1016 ms 147668 KB Output is correct
76 Correct 841 ms 197060 KB Output is correct
77 Correct 776 ms 195832 KB Output is correct
78 Correct 794 ms 195704 KB Output is correct
79 Correct 1516 ms 124660 KB Output is correct
80 Correct 1463 ms 123764 KB Output is correct
81 Correct 1432 ms 123508 KB Output is correct
82 Correct 887 ms 196844 KB Output is correct
83 Correct 1046 ms 188024 KB Output is correct
84 Correct 833 ms 195588 KB Output is correct
85 Correct 1002 ms 186588 KB Output is correct
86 Correct 831 ms 195576 KB Output is correct
87 Correct 1008 ms 187128 KB Output is correct
88 Correct 1510 ms 124596 KB Output is correct
89 Correct 1498 ms 124632 KB Output is correct
90 Correct 1483 ms 123908 KB Output is correct
91 Correct 1468 ms 123668 KB Output is correct
92 Correct 1488 ms 123492 KB Output is correct
93 Correct 1459 ms 123096 KB Output is correct
94 Correct 841 ms 128504 KB Output is correct
95 Correct 835 ms 115236 KB Output is correct
96 Correct 763 ms 126580 KB Output is correct
97 Correct 801 ms 115812 KB Output is correct
98 Correct 786 ms 127724 KB Output is correct
99 Correct 768 ms 115556 KB Output is correct
100 Correct 1488 ms 130448 KB Output is correct
101 Correct 1516 ms 130544 KB Output is correct
102 Correct 1445 ms 129748 KB Output is correct
103 Correct 1434 ms 129176 KB Output is correct
104 Correct 1442 ms 129292 KB Output is correct
105 Correct 1431 ms 129076 KB Output is correct
106 Correct 1014 ms 161196 KB Output is correct
107 Correct 1121 ms 149040 KB Output is correct
108 Correct 991 ms 160908 KB Output is correct
109 Correct 1045 ms 147104 KB Output is correct
110 Correct 1027 ms 161912 KB Output is correct
111 Correct 1032 ms 148272 KB Output is correct
112 Correct 1496 ms 124836 KB Output is correct
113 Correct 1504 ms 124776 KB Output is correct
114 Correct 1528 ms 123920 KB Output is correct
115 Correct 1460 ms 123760 KB Output is correct
116 Correct 1475 ms 123360 KB Output is correct
117 Correct 1586 ms 123632 KB Output is correct
118 Correct 765 ms 195304 KB Output is correct
119 Correct 969 ms 160624 KB Output is correct
120 Correct 1000 ms 147148 KB Output is correct
121 Correct 799 ms 195360 KB Output is correct
122 Correct 990 ms 160180 KB Output is correct
123 Correct 1000 ms 146296 KB Output is correct
124 Correct 774 ms 195704 KB Output is correct
125 Correct 983 ms 160688 KB Output is correct
126 Correct 1082 ms 146552 KB Output is correct