Submission #862077

# Submission time Handle Problem Language Result Execution time Memory
862077 2023-10-17T13:42:01 Z Lib Closing Time (IOI23_closing) C++17
100 / 100
171 ms 50872 KB
#include "closing.h"
#include <bits/stdc++.h>
using namespace std;
//self explanatory enough
int Type[200003];
int Check[200003];
int BFSCheck[200003];
long long Cost1[200003];
long long Cost2[200003];
long long DistX[200003];
long long DistY[200003];
vector <int> XYPath;
int check[200003];
int check2[300003];
long long N,X,Y,K,n,ans1,ans2;
struct edge{
	int first;
	long long second;
};
vector <edge> VTemp;
vector <vector <edge> > adj;
priority_queue <pair <long long,int> > pq1,pq2,pq3,pq4;
int max_score(int N, int X, int Y, long long K, std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
	//just a bunch of initializing
	int n=N;
	int x=X;
	int y=Y;
	long long k=K;
	int q,s,e;
	long long tans,Budget,len;
	vector <int> CList;
	int cur,cur2;
	int t;
	long long t2;
	pair <long long,int> tpos;
		while(!pq1.empty()){
			pq1.pop();
		}
		while(!pq2.empty()){
			pq2.pop();
		}
		while(!pq3.empty()){
			pq3.pop();
		}
		while(!pq4.empty()){
			pq4.pop();
		}
		XYPath.clear();
		adj.clear();
		n=N;
		for(int i=0;i<=n+1;i++){
			adj.push_back(VTemp);
			check[i]=0;
			Cost1[i]=0;
			Cost2[i]=0;
			DistX[i]=0;
			DistY[i]=0;
			Type[i]=0;
		}
		ans1=0;
		ans2=0;
		//generating the tree
		for(int i=1;i<n;i++){
			s=U[i-1];
			e=V[i-1];
			len=W[i-1];
			adj[s].push_back({e,len});
			adj[e].push_back({s,len});
		}
		//dumbass can't even DFS properly, proceeds to BFS twice for ~70 lines
		CList.clear();
		cur=0;
		cur2=0;
		for(int i=0;i<=n+1;i++){
			BFSCheck[i]=0;
		}
		CList.push_back(X);
		BFSCheck[X]=1;
		DistX[X]=0;
		while(cur<CList.size()){
			t=CList[cur];
			for(int i=0;i<adj[t].size();i++){
				if(BFSCheck[adj[t][i].first]==0){
					BFSCheck[adj[t][i].first]=1;
					DistX[adj[t][i].first]=DistX[t]+adj[t][i].second;
					CList.push_back(adj[t][i].first);
				}
			}
			cur++;
		}
		CList.clear();
		cur=0;
		cur2=0;
		for(int i=0;i<=n+1;i++){
			BFSCheck[i]=0;
		}
		CList.push_back(Y);
		BFSCheck[Y]=1;
		DistY[Y]=0;
		while(cur<CList.size()){
			t=CList[cur];
			for(int i=0;i<adj[t].size();i++){
				if(BFSCheck[adj[t][i].first]==0){
					BFSCheck[adj[t][i].first]=1;
					DistY[adj[t][i].first]=DistY[t]+adj[t][i].second;
					CList.push_back(adj[t][i].first);
				}
			}
			cur++;
		}
		/*calculating the cost to "upgrade"vertex i from lv0 => lv1 and lv1 => lv2, which corresponds to Cost1[i] and Cost2[i] respectively
		  also determining the "type" of each vertex i as well:
		  - type 0: vertices with Cost1[i] <= Cost2[i] and does NOT lie on the XY - path
		  - Type 1: vertices with Cost1[i] > Cost2[i]
		  - Type 2: Vertices that lies on the XY - path
		*/
		
		for(int i=0;i<n;i++){
			Cost1[i]=min(DistX[i],DistY[i]);
			Cost2[i]=max(DistX[i],DistY[i])-Cost1[i];
			if(Cost1[i]*2+Cost2[i]==DistX[Y]){
				XYPath.push_back(i);
			}
			if(Cost2[i]<=Cost1[i]){
			 Type[i]=1;
			}
		}
		//First case: The max level for all vertices is 1. Just grab the cheapest Lv1s and call it a day
		for(int i=0;i<XYPath.size();i++){
			Type[XYPath[i]]=2;
		}
		//pq4 is the priority queue that is used for this case. Doesn't really matter otherwise.
		//ans1 is the max sum of "levels" for this case
		//also, I push -Cost1[i] (and later on -Cost2[i] as well) into the priority queue because I don't want to make custom sort functions. Makes things much messier. -max heap is min heap 
		//anyways
		for(int i=0;i<n;i++){
			pq4.push({-Cost1[i],i});
		}
		Budget=K;
		while(Budget>0&&!pq4.empty()){
			Budget+=pq4.top().first;
			check2[pq4.top().second]=1;
			if(Budget>=0){
				ans1++;
				pq4.pop();
			}
		}
		//Case 2: There are no level cap for vertices (max level = 2), and there exists at least 1 vertex upgraded to Lv2 (as having no Lv2 while having to pick all vertices on the XY path will 
		//return an answer that is equally as good as that of case 1 at best
		Budget=K;
		//Since at least 1 Lv2 vertex exists, there must be a point reachable from both X and Y => every single point on the XY - path must be reachable by at least 1 city
		for(int i=0;i<XYPath.size();i++){
			Budget-=Cost1[XYPath[i]];
			check[XYPath[i]]=1;
			ans2++;
		}
		tans=ans1;
		/*
		  pq1: For all "single" upgrades that can be done without further consequences. Works with all upgrades to Type 0 vertices and the remaining (from Lv1 to 2) upgrades for type 2 vertices
		  pq2: For all upgrades done to Type 1 vertices. Uses for optimiality comparasions with the 2 most optimal upgrades in pq1
		  pq3: For finding the cheapest single vertex of type 1 that will be upgraded to Lv1 (if it does exist)
		*/
		if(Budget>0){
			for(int i=0;i<n;i++){
				if(Type[i]==0){
					pq1.push({-Cost1[i],i});
					pq1.push({-Cost2[i],i});
				}else if(Type[i]==1){
					pq2.push({-(Cost1[i]+Cost2[i]),i});
					pq3.push({-Cost1[i],i});
				}else{
					pq1.push({-Cost2[i],i});
				}
			}
			//Just comparing stuffs. This part is for when you have 2 choices: Either do the 2 cheapest Type1 upgrade (consequence free) or maxxing out a Type 1 vertex (bring it from lv0 to lv2)
			while(!pq2.empty()&&Budget+pq2.top().first>=0){
				/*
				  If there is only 1 Type 1 upgrade left, use all Type 2 upgrades that we can still use :
				  - If there are still some budget left after picking all pickable Type 1 vertices (to bump to lv2 instantly), we can still upgrade this last Type 0/2 vertex
				  - Otherwise, it is already the current optimal answer (can't pick a type 1 vertex to max out (no budget left), can't even pick the cheapest possible Type1 upgrade => there's
				  literally nothing you can do, that's all you could pick). No further upgrade can be made - aside from upgrading 1 Type 1 vertex to Lv1
				*/
				if(pq1.size() <=1){
					Budget+=pq2.top().first;
					if(Budget>=0){
					check[pq2.top().second]=2;
					pq2.pop();
					ans2+=2;
					continue;
					}
				}
				/*
				  Comparing the cost for either: Doing the 2 cheapest "consequences free" upgrade (Type1 upgrades), or maxxing out the cheapest Type1 vertex. If maxxing out the cheapest Type1
				  vertex is cheaper, then immediately max it out. Otherwise, if doing both of the 2 cheapest Type1 upgrades are cheaper than maxxing out the cheapest Type1 vertext, do the 
				  cheapest Type1 upgrade possible, then try to compare the 2 scenarios again
				  The "if Budget>=0" is just to check whether the upgrade is actually possible or not, in all cases
				*/
				tpos=pq1.top();
				pq1.pop();
				if(pq1.top().first+tpos.first> pq2.top().first&&Budget+tpos.first>=0){
					Budget+=(tpos.first);
					ans2+=1;
					check[tpos.second]++;
				}else if(pq2.top().first+Budget>=0){
				Budget+=pq2.top().first;
					pq1.push(tpos);
					ans2+=2;
					check[pq2.top().second]=2;
					pq2.pop();
				}
			}
			//After the previous phase, there is no longer a pickable Type 1 vertex to max out. From this point on, greedily pick the cheapest remaining availible upgrades from those in pq1
			while(!pq1.empty()&&Budget+pq1.top().first>=0){
				Budget+=pq1.top().first;
					ans2++;
					check[pq1.top().second]++;
					pq1.pop();
			}
			while(!pq3.empty()&&check[pq3.top().second]!=0){
				pq3.pop();
			}
			//And there's at most 1 Type 1 vertex that should be upgraded to lv1 in an optimal answer, so take the cheapest one (that hasn't been through any upgrade yet) and see whether it is
			//"upgradable" or not
			if(!pq3.empty()&&pq3.top().first+Budget>=0){
				ans2++;
				check[pq3.top().second]=1;
			}
			//bruh
			tans=max(ans1,ans2);
		}
		return tans;
}

Compilation message

closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:81:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   81 |   while(cur<CList.size()){
      |         ~~~^~~~~~~~~~~~~
closing.cpp:83:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<edge>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |    for(int i=0;i<adj[t].size();i++){
      |                ~^~~~~~~~~~~~~~
closing.cpp:101:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  101 |   while(cur<CList.size()){
      |         ~~~^~~~~~~~~~~~~
closing.cpp:103:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<edge>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  103 |    for(int i=0;i<adj[t].size();i++){
      |                ~^~~~~~~~~~~~~~
closing.cpp:130:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  130 |   for(int i=0;i<XYPath.size();i++){
      |               ~^~~~~~~~~~~~~~
closing.cpp:153:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  153 |   for(int i=0;i<XYPath.size();i++){
      |               ~^~~~~~~~~~~~~~
closing.cpp:27:6: warning: unused variable 'x' [-Wunused-variable]
   27 |  int x=X;
      |      ^
closing.cpp:28:6: warning: unused variable 'y' [-Wunused-variable]
   28 |  int y=Y;
      |      ^
closing.cpp:29:12: warning: unused variable 'k' [-Wunused-variable]
   29 |  long long k=K;
      |            ^
closing.cpp:30:6: warning: unused variable 'q' [-Wunused-variable]
   30 |  int q,s,e;
      |      ^
closing.cpp:33:10: warning: variable 'cur2' set but not used [-Wunused-but-set-variable]
   33 |  int cur,cur2;
      |          ^~~~
closing.cpp:35:12: warning: unused variable 't2' [-Wunused-variable]
   35 |  long long t2;
      |            ^~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 10584 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 108 ms 44420 KB Output is correct
2 Correct 105 ms 44216 KB Output is correct
3 Correct 77 ms 15792 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 10584 KB Output is correct
2 Correct 1 ms 10588 KB Output is correct
3 Correct 1 ms 10588 KB Output is correct
4 Correct 2 ms 10588 KB Output is correct
5 Correct 1 ms 10588 KB Output is correct
6 Correct 1 ms 10584 KB Output is correct
7 Correct 1 ms 10588 KB Output is correct
8 Correct 1 ms 10588 KB Output is correct
9 Correct 1 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 10584 KB Output is correct
2 Correct 1 ms 10588 KB Output is correct
3 Correct 1 ms 10588 KB Output is correct
4 Correct 2 ms 10588 KB Output is correct
5 Correct 1 ms 10588 KB Output is correct
6 Correct 1 ms 10584 KB Output is correct
7 Correct 1 ms 10588 KB Output is correct
8 Correct 1 ms 10588 KB Output is correct
9 Correct 1 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 2 ms 10588 KB Output is correct
13 Correct 1 ms 10588 KB Output is correct
14 Correct 1 ms 10588 KB Output is correct
15 Correct 2 ms 10588 KB Output is correct
16 Correct 1 ms 10584 KB Output is correct
17 Correct 1 ms 10588 KB Output is correct
18 Correct 1 ms 10588 KB Output is correct
19 Correct 1 ms 10588 KB Output is correct
20 Correct 1 ms 10588 KB Output is correct
21 Correct 2 ms 10844 KB Output is correct
22 Correct 1 ms 10588 KB Output is correct
23 Correct 2 ms 10588 KB Output is correct
24 Correct 2 ms 10588 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 10584 KB Output is correct
2 Correct 1 ms 10588 KB Output is correct
3 Correct 1 ms 10588 KB Output is correct
4 Correct 2 ms 10588 KB Output is correct
5 Correct 1 ms 10588 KB Output is correct
6 Correct 1 ms 10584 KB Output is correct
7 Correct 1 ms 10588 KB Output is correct
8 Correct 1 ms 10588 KB Output is correct
9 Correct 1 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 2 ms 10588 KB Output is correct
13 Correct 1 ms 10588 KB Output is correct
14 Correct 1 ms 10588 KB Output is correct
15 Correct 2 ms 10588 KB Output is correct
16 Correct 1 ms 10584 KB Output is correct
17 Correct 1 ms 10588 KB Output is correct
18 Correct 1 ms 10588 KB Output is correct
19 Correct 1 ms 10588 KB Output is correct
20 Correct 1 ms 10588 KB Output is correct
21 Correct 2 ms 10844 KB Output is correct
22 Correct 1 ms 10588 KB Output is correct
23 Correct 2 ms 10588 KB Output is correct
24 Correct 2 ms 10588 KB Output is correct
25 Correct 3 ms 10584 KB Output is correct
26 Correct 3 ms 11328 KB Output is correct
27 Correct 3 ms 11100 KB Output is correct
28 Correct 3 ms 11100 KB Output is correct
29 Correct 3 ms 11100 KB Output is correct
30 Correct 2 ms 11100 KB Output is correct
31 Correct 2 ms 11100 KB Output is correct
32 Correct 2 ms 11096 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 10584 KB Output is correct
2 Correct 1 ms 10584 KB Output is correct
3 Correct 1 ms 10588 KB Output is correct
4 Correct 1 ms 10588 KB Output is correct
5 Correct 2 ms 10588 KB Output is correct
6 Correct 1 ms 10588 KB Output is correct
7 Correct 1 ms 10688 KB Output is correct
8 Correct 1 ms 10588 KB Output is correct
9 Correct 1 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 2 ms 10692 KB Output is correct
12 Correct 1 ms 10588 KB Output is correct
13 Correct 1 ms 10588 KB Output is correct
14 Correct 1 ms 10584 KB Output is correct
15 Correct 1 ms 10588 KB Output is correct
16 Correct 1 ms 10588 KB Output is correct
17 Correct 2 ms 10588 KB Output is correct
18 Correct 1 ms 10588 KB Output is correct
19 Correct 1 ms 10588 KB Output is correct
20 Correct 1 ms 10588 KB Output is correct
21 Correct 1 ms 10588 KB Output is correct
22 Correct 1 ms 10588 KB Output is correct
23 Correct 1 ms 10584 KB Output is correct
24 Correct 1 ms 10588 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 10584 KB Output is correct
2 Correct 1 ms 10584 KB Output is correct
3 Correct 1 ms 10588 KB Output is correct
4 Correct 1 ms 10588 KB Output is correct
5 Correct 2 ms 10588 KB Output is correct
6 Correct 1 ms 10588 KB Output is correct
7 Correct 1 ms 10584 KB Output is correct
8 Correct 1 ms 10588 KB Output is correct
9 Correct 1 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 1 ms 10588 KB Output is correct
13 Correct 2 ms 10588 KB Output is correct
14 Correct 1 ms 10588 KB Output is correct
15 Correct 1 ms 10588 KB Output is correct
16 Correct 2 ms 10588 KB Output is correct
17 Correct 1 ms 10584 KB Output is correct
18 Correct 1 ms 10588 KB Output is correct
19 Correct 1 ms 10688 KB Output is correct
20 Correct 1 ms 10588 KB Output is correct
21 Correct 1 ms 10588 KB Output is correct
22 Correct 1 ms 10588 KB Output is correct
23 Correct 2 ms 10692 KB Output is correct
24 Correct 1 ms 10588 KB Output is correct
25 Correct 1 ms 10588 KB Output is correct
26 Correct 1 ms 10584 KB Output is correct
27 Correct 1 ms 10588 KB Output is correct
28 Correct 1 ms 10588 KB Output is correct
29 Correct 2 ms 10588 KB Output is correct
30 Correct 1 ms 10588 KB Output is correct
31 Correct 1 ms 10588 KB Output is correct
32 Correct 1 ms 10588 KB Output is correct
33 Correct 1 ms 10588 KB Output is correct
34 Correct 1 ms 10588 KB Output is correct
35 Correct 1 ms 10584 KB Output is correct
36 Correct 1 ms 10588 KB Output is correct
37 Correct 2 ms 10840 KB Output is correct
38 Correct 1 ms 10588 KB Output is correct
39 Correct 1 ms 10588 KB Output is correct
40 Correct 1 ms 10588 KB Output is correct
41 Correct 2 ms 10588 KB Output is correct
42 Correct 1 ms 10840 KB Output is correct
43 Correct 1 ms 10588 KB Output is correct
44 Correct 1 ms 10588 KB Output is correct
45 Correct 1 ms 10588 KB Output is correct
46 Correct 1 ms 10588 KB Output is correct
47 Correct 1 ms 10588 KB Output is correct
48 Correct 1 ms 10688 KB Output is correct
49 Correct 1 ms 10588 KB Output is correct
50 Correct 1 ms 10688 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 10584 KB Output is correct
2 Correct 1 ms 10584 KB Output is correct
3 Correct 1 ms 10588 KB Output is correct
4 Correct 1 ms 10588 KB Output is correct
5 Correct 2 ms 10588 KB Output is correct
6 Correct 1 ms 10588 KB Output is correct
7 Correct 1 ms 10584 KB Output is correct
8 Correct 1 ms 10588 KB Output is correct
9 Correct 1 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 1 ms 10588 KB Output is correct
13 Correct 2 ms 10588 KB Output is correct
14 Correct 1 ms 10588 KB Output is correct
15 Correct 1 ms 10588 KB Output is correct
16 Correct 2 ms 10588 KB Output is correct
17 Correct 1 ms 10584 KB Output is correct
18 Correct 1 ms 10588 KB Output is correct
19 Correct 1 ms 10588 KB Output is correct
20 Correct 1 ms 10588 KB Output is correct
21 Correct 1 ms 10588 KB Output is correct
22 Correct 2 ms 10844 KB Output is correct
23 Correct 1 ms 10588 KB Output is correct
24 Correct 2 ms 10588 KB Output is correct
25 Correct 2 ms 10588 KB Output is correct
26 Correct 1 ms 10688 KB Output is correct
27 Correct 1 ms 10588 KB Output is correct
28 Correct 1 ms 10588 KB Output is correct
29 Correct 1 ms 10588 KB Output is correct
30 Correct 2 ms 10692 KB Output is correct
31 Correct 1 ms 10588 KB Output is correct
32 Correct 1 ms 10588 KB Output is correct
33 Correct 1 ms 10584 KB Output is correct
34 Correct 1 ms 10588 KB Output is correct
35 Correct 1 ms 10588 KB Output is correct
36 Correct 2 ms 10588 KB Output is correct
37 Correct 1 ms 10588 KB Output is correct
38 Correct 1 ms 10588 KB Output is correct
39 Correct 1 ms 10588 KB Output is correct
40 Correct 1 ms 10588 KB Output is correct
41 Correct 1 ms 10588 KB Output is correct
42 Correct 1 ms 10584 KB Output is correct
43 Correct 1 ms 10588 KB Output is correct
44 Correct 2 ms 10840 KB Output is correct
45 Correct 1 ms 10588 KB Output is correct
46 Correct 1 ms 10588 KB Output is correct
47 Correct 1 ms 10588 KB Output is correct
48 Correct 2 ms 10588 KB Output is correct
49 Correct 1 ms 10840 KB Output is correct
50 Correct 1 ms 10588 KB Output is correct
51 Correct 1 ms 10588 KB Output is correct
52 Correct 1 ms 10588 KB Output is correct
53 Correct 1 ms 10588 KB Output is correct
54 Correct 1 ms 10588 KB Output is correct
55 Correct 1 ms 10688 KB Output is correct
56 Correct 1 ms 10588 KB Output is correct
57 Correct 1 ms 10688 KB Output is correct
58 Correct 2 ms 10588 KB Output is correct
59 Correct 2 ms 10588 KB Output is correct
60 Correct 1 ms 10588 KB Output is correct
61 Correct 2 ms 10588 KB Output is correct
62 Correct 2 ms 10588 KB Output is correct
63 Correct 1 ms 10588 KB Output is correct
64 Correct 2 ms 10588 KB Output is correct
65 Correct 2 ms 10588 KB Output is correct
66 Correct 1 ms 10688 KB Output is correct
67 Correct 1 ms 10588 KB Output is correct
68 Correct 1 ms 10588 KB Output is correct
69 Correct 1 ms 10692 KB Output is correct
70 Correct 1 ms 10588 KB Output is correct
71 Correct 1 ms 10588 KB Output is correct
72 Correct 2 ms 10588 KB Output is correct
73 Correct 2 ms 10588 KB Output is correct
74 Correct 2 ms 10588 KB Output is correct
75 Correct 2 ms 10584 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 10584 KB Output is correct
2 Correct 1 ms 10584 KB Output is correct
3 Correct 1 ms 10588 KB Output is correct
4 Correct 1 ms 10588 KB Output is correct
5 Correct 2 ms 10588 KB Output is correct
6 Correct 1 ms 10588 KB Output is correct
7 Correct 1 ms 10584 KB Output is correct
8 Correct 1 ms 10588 KB Output is correct
9 Correct 1 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 1 ms 10588 KB Output is correct
13 Correct 2 ms 10588 KB Output is correct
14 Correct 1 ms 10588 KB Output is correct
15 Correct 1 ms 10588 KB Output is correct
16 Correct 2 ms 10588 KB Output is correct
17 Correct 1 ms 10584 KB Output is correct
18 Correct 1 ms 10588 KB Output is correct
19 Correct 1 ms 10588 KB Output is correct
20 Correct 1 ms 10588 KB Output is correct
21 Correct 1 ms 10588 KB Output is correct
22 Correct 2 ms 10844 KB Output is correct
23 Correct 1 ms 10588 KB Output is correct
24 Correct 2 ms 10588 KB Output is correct
25 Correct 2 ms 10588 KB Output is correct
26 Correct 3 ms 10584 KB Output is correct
27 Correct 3 ms 11328 KB Output is correct
28 Correct 3 ms 11100 KB Output is correct
29 Correct 3 ms 11100 KB Output is correct
30 Correct 3 ms 11100 KB Output is correct
31 Correct 2 ms 11100 KB Output is correct
32 Correct 2 ms 11100 KB Output is correct
33 Correct 2 ms 11096 KB Output is correct
34 Correct 1 ms 10688 KB Output is correct
35 Correct 1 ms 10588 KB Output is correct
36 Correct 1 ms 10588 KB Output is correct
37 Correct 1 ms 10588 KB Output is correct
38 Correct 2 ms 10692 KB Output is correct
39 Correct 1 ms 10588 KB Output is correct
40 Correct 1 ms 10588 KB Output is correct
41 Correct 1 ms 10584 KB Output is correct
42 Correct 1 ms 10588 KB Output is correct
43 Correct 1 ms 10588 KB Output is correct
44 Correct 2 ms 10588 KB Output is correct
45 Correct 1 ms 10588 KB Output is correct
46 Correct 1 ms 10588 KB Output is correct
47 Correct 1 ms 10588 KB Output is correct
48 Correct 1 ms 10588 KB Output is correct
49 Correct 1 ms 10588 KB Output is correct
50 Correct 1 ms 10584 KB Output is correct
51 Correct 1 ms 10588 KB Output is correct
52 Correct 2 ms 10840 KB Output is correct
53 Correct 1 ms 10588 KB Output is correct
54 Correct 1 ms 10588 KB Output is correct
55 Correct 1 ms 10588 KB Output is correct
56 Correct 2 ms 10588 KB Output is correct
57 Correct 1 ms 10840 KB Output is correct
58 Correct 1 ms 10588 KB Output is correct
59 Correct 1 ms 10588 KB Output is correct
60 Correct 1 ms 10588 KB Output is correct
61 Correct 1 ms 10588 KB Output is correct
62 Correct 1 ms 10588 KB Output is correct
63 Correct 1 ms 10688 KB Output is correct
64 Correct 1 ms 10588 KB Output is correct
65 Correct 1 ms 10688 KB Output is correct
66 Correct 2 ms 10588 KB Output is correct
67 Correct 2 ms 10588 KB Output is correct
68 Correct 1 ms 10588 KB Output is correct
69 Correct 2 ms 10588 KB Output is correct
70 Correct 2 ms 10588 KB Output is correct
71 Correct 1 ms 10588 KB Output is correct
72 Correct 2 ms 10588 KB Output is correct
73 Correct 2 ms 10588 KB Output is correct
74 Correct 1 ms 10688 KB Output is correct
75 Correct 1 ms 10588 KB Output is correct
76 Correct 1 ms 10588 KB Output is correct
77 Correct 1 ms 10692 KB Output is correct
78 Correct 1 ms 10588 KB Output is correct
79 Correct 1 ms 10588 KB Output is correct
80 Correct 2 ms 10588 KB Output is correct
81 Correct 2 ms 10588 KB Output is correct
82 Correct 2 ms 10588 KB Output is correct
83 Correct 2 ms 10584 KB Output is correct
84 Correct 3 ms 10840 KB Output is correct
85 Correct 4 ms 10588 KB Output is correct
86 Correct 3 ms 10588 KB Output is correct
87 Correct 3 ms 10584 KB Output is correct
88 Correct 3 ms 10588 KB Output is correct
89 Correct 3 ms 11360 KB Output is correct
90 Correct 3 ms 11104 KB Output is correct
91 Correct 3 ms 11324 KB Output is correct
92 Correct 3 ms 11100 KB Output is correct
93 Correct 2 ms 11104 KB Output is correct
94 Correct 3 ms 11012 KB Output is correct
95 Correct 3 ms 11096 KB Output is correct
96 Correct 3 ms 11100 KB Output is correct
97 Correct 3 ms 11100 KB Output is correct
98 Correct 3 ms 11100 KB Output is correct
99 Correct 3 ms 11100 KB Output is correct
100 Correct 3 ms 11100 KB Output is correct
101 Correct 3 ms 10736 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 10584 KB Output is correct
2 Correct 1 ms 10584 KB Output is correct
3 Correct 1 ms 10588 KB Output is correct
4 Correct 1 ms 10588 KB Output is correct
5 Correct 2 ms 10588 KB Output is correct
6 Correct 1 ms 10588 KB Output is correct
7 Correct 1 ms 10584 KB Output is correct
8 Correct 1 ms 10588 KB Output is correct
9 Correct 1 ms 10588 KB Output is correct
10 Correct 1 ms 10588 KB Output is correct
11 Correct 1 ms 10588 KB Output is correct
12 Correct 1 ms 10588 KB Output is correct
13 Correct 2 ms 10588 KB Output is correct
14 Correct 1 ms 10588 KB Output is correct
15 Correct 1 ms 10588 KB Output is correct
16 Correct 2 ms 10588 KB Output is correct
17 Correct 1 ms 10584 KB Output is correct
18 Correct 1 ms 10588 KB Output is correct
19 Correct 1 ms 10588 KB Output is correct
20 Correct 1 ms 10588 KB Output is correct
21 Correct 1 ms 10588 KB Output is correct
22 Correct 2 ms 10844 KB Output is correct
23 Correct 1 ms 10588 KB Output is correct
24 Correct 2 ms 10588 KB Output is correct
25 Correct 2 ms 10588 KB Output is correct
26 Correct 3 ms 10584 KB Output is correct
27 Correct 3 ms 11328 KB Output is correct
28 Correct 3 ms 11100 KB Output is correct
29 Correct 3 ms 11100 KB Output is correct
30 Correct 3 ms 11100 KB Output is correct
31 Correct 2 ms 11100 KB Output is correct
32 Correct 2 ms 11100 KB Output is correct
33 Correct 2 ms 11096 KB Output is correct
34 Correct 1 ms 10688 KB Output is correct
35 Correct 1 ms 10588 KB Output is correct
36 Correct 1 ms 10588 KB Output is correct
37 Correct 1 ms 10588 KB Output is correct
38 Correct 2 ms 10692 KB Output is correct
39 Correct 1 ms 10588 KB Output is correct
40 Correct 1 ms 10588 KB Output is correct
41 Correct 1 ms 10584 KB Output is correct
42 Correct 1 ms 10588 KB Output is correct
43 Correct 1 ms 10588 KB Output is correct
44 Correct 2 ms 10588 KB Output is correct
45 Correct 1 ms 10588 KB Output is correct
46 Correct 1 ms 10588 KB Output is correct
47 Correct 1 ms 10588 KB Output is correct
48 Correct 1 ms 10588 KB Output is correct
49 Correct 1 ms 10588 KB Output is correct
50 Correct 1 ms 10584 KB Output is correct
51 Correct 1 ms 10588 KB Output is correct
52 Correct 2 ms 10840 KB Output is correct
53 Correct 1 ms 10588 KB Output is correct
54 Correct 1 ms 10588 KB Output is correct
55 Correct 1 ms 10588 KB Output is correct
56 Correct 2 ms 10588 KB Output is correct
57 Correct 1 ms 10840 KB Output is correct
58 Correct 1 ms 10588 KB Output is correct
59 Correct 1 ms 10588 KB Output is correct
60 Correct 1 ms 10588 KB Output is correct
61 Correct 1 ms 10588 KB Output is correct
62 Correct 1 ms 10588 KB Output is correct
63 Correct 1 ms 10688 KB Output is correct
64 Correct 1 ms 10588 KB Output is correct
65 Correct 1 ms 10688 KB Output is correct
66 Correct 2 ms 10588 KB Output is correct
67 Correct 2 ms 10588 KB Output is correct
68 Correct 1 ms 10588 KB Output is correct
69 Correct 2 ms 10588 KB Output is correct
70 Correct 2 ms 10588 KB Output is correct
71 Correct 1 ms 10588 KB Output is correct
72 Correct 2 ms 10588 KB Output is correct
73 Correct 2 ms 10588 KB Output is correct
74 Correct 1 ms 10688 KB Output is correct
75 Correct 1 ms 10588 KB Output is correct
76 Correct 1 ms 10588 KB Output is correct
77 Correct 1 ms 10692 KB Output is correct
78 Correct 1 ms 10588 KB Output is correct
79 Correct 1 ms 10588 KB Output is correct
80 Correct 2 ms 10588 KB Output is correct
81 Correct 2 ms 10588 KB Output is correct
82 Correct 2 ms 10588 KB Output is correct
83 Correct 2 ms 10584 KB Output is correct
84 Correct 3 ms 10840 KB Output is correct
85 Correct 4 ms 10588 KB Output is correct
86 Correct 3 ms 10588 KB Output is correct
87 Correct 3 ms 10584 KB Output is correct
88 Correct 3 ms 10588 KB Output is correct
89 Correct 3 ms 11360 KB Output is correct
90 Correct 3 ms 11104 KB Output is correct
91 Correct 3 ms 11324 KB Output is correct
92 Correct 3 ms 11100 KB Output is correct
93 Correct 2 ms 11104 KB Output is correct
94 Correct 3 ms 11012 KB Output is correct
95 Correct 3 ms 11096 KB Output is correct
96 Correct 3 ms 11100 KB Output is correct
97 Correct 3 ms 11100 KB Output is correct
98 Correct 3 ms 11100 KB Output is correct
99 Correct 3 ms 11100 KB Output is correct
100 Correct 3 ms 11100 KB Output is correct
101 Correct 3 ms 10736 KB Output is correct
102 Correct 103 ms 15812 KB Output is correct
103 Correct 110 ms 15956 KB Output is correct
104 Correct 155 ms 47808 KB Output is correct
105 Correct 122 ms 16464 KB Output is correct
106 Correct 112 ms 15896 KB Output is correct
107 Correct 104 ms 47752 KB Output is correct
108 Correct 112 ms 50720 KB Output is correct
109 Correct 68 ms 38852 KB Output is correct
110 Correct 171 ms 50812 KB Output is correct
111 Correct 120 ms 46304 KB Output is correct
112 Correct 118 ms 50104 KB Output is correct
113 Correct 114 ms 42940 KB Output is correct
114 Correct 107 ms 50632 KB Output is correct
115 Correct 101 ms 43708 KB Output is correct
116 Correct 132 ms 47484 KB Output is correct
117 Correct 123 ms 41408 KB Output is correct
118 Correct 136 ms 50872 KB Output is correct
119 Correct 139 ms 19428 KB Output is correct
120 Correct 93 ms 15128 KB Output is correct