Submission #67547581


Source Code Expand

#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <utility>
#define fi first
#define se second
using namespace std;
template<class T> using heap=priority_queue<T,vector<T>,greater<T>>;
using ll = long long;
const int N = 1e5, M = 1.5e6;
int n,m,tot;
ll a[N + 2],dis[M + 2];
vector<pair<int,ll>> e[M + 2];
struct Segtree {
	static const int S = N << 2;
	int s[S],b[N + 2];
	vector<pair<int,int>> p;
	int z[N + 2],en;
#define mid (l+r>>1)
#define ls (u<<1)
#define rs (ls|1)
#define li ls,l,mid
#define ri rs,mid+1,r
	void init(int u,int l,int r) {
		s[u]=++tot;
		if(l==r) return b[l]=s[u],void();
		init(li);
		init(ri);
		p.emplace_back(s[u],s[ls]);
		p.emplace_back(s[u],s[rs]);
	}
	void ask(int l,int r) {
		en=0;
		qry(1,1,n,l,r);
	}
	void qry(int u,int l,int r,int x,int y) {
		if(r<x||y<l) return ;
		if(x<=l&&r<=y) return z[++en]=s[u],void();
		if(x<=mid) qry(li,x,y);
		if(mid<y) qry(ri,x,y);
	}
} f0,f1,g0,g1;
inline void ins(int u,int v,ll w) { e[u].emplace_back(v,w); }
int main() {
	scanf("%d%d",&n,&m);
	for(int i=1; i<=n; ++i) scanf("%lld",&a[i]);
	tot=n;
	f0.init(1,1,n);
	f1.init(1,1,n);
	g0.init(1,1,n);
	g1.init(1,1,n);
	for(auto [p,u] : f0.p) ins(p,u,0);
	for(auto [p,u] : f1.p) ins(p,u,0);
	for(auto [p,u] : g0.p) ins(u,p,0);
	for(auto [p,u] : g1.p) ins(u,p,0);
	for(int i=1; i<=n; ++i) {
		ins(f0.b[i],i,-a[i]);
		ins(f1.b[i],i,a[i]);
		ins(i,g0.b[i],-a[i]);
		ins(i,g1.b[i],a[i]);
	}
	for(int i=1; i<=m; ++i) {
		int l,r,x,y;
		ll c;
		scanf("%d%d%d%d%lld\n",&l,&r,&x,&y,&c);
		int u=++tot;
		if(r<x) {
			g0.ask(l,r);
			for(int j=1; j<=g0.en; ++j) ins(g0.z[j],u,c);
			f1.ask(x,y);
			for(int j=1; j<=f1.en; ++j) ins(u,f1.z[j],0);
		} else {
			g1.ask(l,r);
			for(int j=1; j<=g1.en; ++j) ins(g1.z[j],u,c);
			f0.ask(x,y);
			for(int j=1; j<=f0.en; ++j) ins(u,f0.z[j],0);
		}
	}
	heap<pair<ll,int>> Q;
	memset(dis,0x3f,sizeof(dis));
	Q.emplace(dis[1]=0,1);
	while(Q.size()) {
		auto [d,u]=Q.top();
		Q.pop();
		if(dis[u]!=d) continue;
		for(auto [v,w] : e[u])
			if(d+w<dis[v])
				Q.emplace(dis[v]=d+w,v);
	}
	for(int i=2; i<=n; ++i) printf("%lld ",dis[i]==dis[0]?-1:dis[i]);
	return 0;
}

Submission Info

Submission Time
Task G - AtCoder Express 4
User lnw143
Language C++ 20 (gcc 12.2)
Score 0
Code Size 2236 Byte
Status TLE
Exec Time 2770 ms
Memory 247836 KiB

Compile Error

Main.cpp: In member function ‘void Segtree::init(int, int, int)’:
Main.cpp:20:15: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   20 | #define mid (l+r>>1)
      |              ~^~
Main.cpp:23:17: note: in expansion of macro ‘mid’
   23 | #define li ls,l,mid
      |                 ^~~
Main.cpp:28:22: note: in expansion of macro ‘li’
   28 |                 init(li);
      |                      ^~
Main.cpp:20:15: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   20 | #define mid (l+r>>1)
      |              ~^~
Main.cpp:24:15: note: in expansion of macro ‘mid’
   24 | #define ri rs,mid+1,r
      |               ^~~
Main.cpp:29:22: note: in expansion of macro ‘ri’
   29 |                 init(ri);
      |                      ^~
Main.cpp: In member function ‘void Segtree::qry(int, int, int, int, int)’:
Main.cpp:20:15: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   20 | #define mid (l+r>>1)
      |              ~^~
Main.cpp:40:23: note: in expansion of macro ‘mid’
   40 |                 if(x<=mid) qry(li,x,y);
      |                       ^~~
Main.cpp:20:15: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   20 | #define mid (l+r>>1)
      |              ~^~
Main.cpp:23:17: note: in expansion of macro ‘mid’
   23 | #define li ls,l,mid
      |                 ^~~
Main.cpp:40:32: note: in expansion of macro ‘li’
   40 |                 if(x<=mid) qry(li,x,y);
      |                                ^~
Main.cpp:20:15: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   20 | #define mid (l+r>>1)
      |              ~^~
Main.cpp:41:20: note: in expansion of macro ‘mid’
   41 |                 if(mid<y) qry(ri,x,y);
      |                    ^~~
Main.cpp:20:15: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   20 | #define mid (l+r>>1)
      |              ~^~
Main.cpp:24:15: note: in expansion of macro ‘mid’
   24 | #define ri rs,mid+1,r
      |               ^~~
Main.cpp:41:31: note: in expansion of macro ‘ri’
   41 |                 if(mid<y) qry(ri,x,y);
      |                               ^~
Main.cpp: In function ‘int main()’:
Main.cpp:46:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   46 |         scanf("%d%d",&n,&m);
      |         ~~~~~^~~~~~~~~~~~~~
Main.cpp:47:38: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   47 |         for(int i=1; i<=n; ++i) scanf("%lld",&a[i]);
      |                                 ~~~~~^~~~~~~~~~~~~~
Main.cpp:66:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   66 |                 scanf("%d%d%d%d%lld\n",&l,&r,&x,&y,&c);
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 625
Status
AC × 2
AC × 76
TLE × 3
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 02_test_00.txt, 02_test_01.txt, 02_test_02.txt, 02_test_03.txt, 02_test_04.txt, 02_test_05.txt, 02_test_06.txt, 02_test_07.txt, 02_test_08.txt, 02_test_09.txt, 02_test_10.txt, 02_test_11.txt, 02_test_12.txt, 02_test_13.txt, 02_test_14.txt, 02_test_15.txt, 03_test_00.txt, 03_test_01.txt, 03_test_02.txt, 04_test_00.txt, 04_test_01.txt, 04_test_02.txt, 05_test_00.txt, 05_test_01.txt, 05_test_02.txt, 05_test_03.txt, 05_test_04.txt, 05_test_05.txt, 06_test_00.txt, 06_test_01.txt, 06_test_02.txt, 06_test_03.txt, 07_test_00.txt, 07_test_01.txt, 07_test_02.txt, 07_test_03.txt, 07_test_04.txt, 07_test_05.txt, 08_test_00.txt, 08_test_01.txt, 08_test_02.txt, 08_test_03.txt, 09_test_00.txt, 10_test_00.txt, 10_test_01.txt, 10_test_02.txt, 10_test_03.txt, 10_test_04.txt, 10_test_05.txt, 11_test_00.txt, 11_test_01.txt, 11_test_02.txt, 11_test_03.txt, 11_test_04.txt, 11_test_05.txt, 11_test_06.txt, 11_test_07.txt, 11_test_08.txt, 11_test_09.txt, 11_test_10.txt, 11_test_11.txt, 11_test_12.txt, 11_test_13.txt, 12_test_00.txt, 12_test_01.txt, 13_test_00.txt, 13_test_01.txt, 13_test_02.txt, 13_test_03.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 10 ms 14972 KiB
00_sample_01.txt AC 10 ms 15032 KiB
01_test_00.txt AC 482 ms 101328 KiB
01_test_01.txt TLE 2768 ms 247836 KiB
01_test_02.txt TLE 2767 ms 170020 KiB
01_test_03.txt AC 413 ms 98120 KiB
01_test_04.txt AC 421 ms 108540 KiB
01_test_05.txt AC 325 ms 95832 KiB
01_test_06.txt AC 380 ms 97136 KiB
01_test_07.txt AC 1739 ms 137544 KiB
02_test_00.txt AC 414 ms 99980 KiB
02_test_01.txt AC 349 ms 100236 KiB
02_test_02.txt TLE 2770 ms 247580 KiB
02_test_03.txt AC 705 ms 149348 KiB
02_test_04.txt AC 484 ms 112488 KiB
02_test_05.txt AC 325 ms 107108 KiB
02_test_06.txt AC 350 ms 96800 KiB
02_test_07.txt AC 317 ms 95800 KiB
02_test_08.txt AC 374 ms 107180 KiB
02_test_09.txt AC 360 ms 107112 KiB
02_test_10.txt AC 331 ms 95760 KiB
02_test_11.txt AC 299 ms 95808 KiB
02_test_12.txt AC 347 ms 96072 KiB
02_test_13.txt AC 321 ms 95828 KiB
02_test_14.txt AC 531 ms 112676 KiB
02_test_15.txt AC 378 ms 108480 KiB
03_test_00.txt AC 250 ms 115356 KiB
03_test_01.txt AC 270 ms 115296 KiB
03_test_02.txt AC 279 ms 105772 KiB
04_test_00.txt AC 249 ms 115112 KiB
04_test_01.txt AC 259 ms 115104 KiB
04_test_02.txt AC 287 ms 107932 KiB
05_test_00.txt AC 338 ms 127740 KiB
05_test_01.txt AC 289 ms 127744 KiB
05_test_02.txt AC 325 ms 116596 KiB
05_test_03.txt AC 314 ms 110644 KiB
05_test_04.txt AC 296 ms 102872 KiB
05_test_05.txt AC 256 ms 95112 KiB
06_test_00.txt AC 296 ms 117388 KiB
06_test_01.txt AC 303 ms 109976 KiB
06_test_02.txt AC 287 ms 102104 KiB
06_test_03.txt AC 249 ms 94396 KiB
07_test_00.txt AC 284 ms 122480 KiB
07_test_01.txt AC 292 ms 116348 KiB
07_test_02.txt AC 275 ms 113400 KiB
07_test_03.txt AC 282 ms 107812 KiB
07_test_04.txt AC 279 ms 100028 KiB
07_test_05.txt AC 282 ms 93296 KiB
08_test_00.txt AC 290 ms 116308 KiB
08_test_01.txt AC 283 ms 107096 KiB
08_test_02.txt AC 282 ms 99140 KiB
08_test_03.txt AC 283 ms 92808 KiB
09_test_00.txt AC 141 ms 88164 KiB
10_test_00.txt AC 239 ms 115204 KiB
10_test_01.txt AC 267 ms 115352 KiB
10_test_02.txt AC 280 ms 105716 KiB
10_test_03.txt AC 199 ms 139656 KiB
10_test_04.txt AC 216 ms 140732 KiB
10_test_05.txt AC 247 ms 140748 KiB
11_test_00.txt AC 377 ms 129444 KiB
11_test_01.txt AC 420 ms 134412 KiB
11_test_02.txt AC 428 ms 133456 KiB
11_test_03.txt AC 630 ms 134396 KiB
11_test_04.txt AC 607 ms 112692 KiB
11_test_05.txt AC 362 ms 97708 KiB
11_test_06.txt AC 257 ms 90096 KiB
11_test_07.txt AC 400 ms 134712 KiB
11_test_08.txt AC 436 ms 134916 KiB
11_test_09.txt AC 431 ms 132688 KiB
11_test_10.txt AC 525 ms 126216 KiB
11_test_11.txt AC 566 ms 112684 KiB
11_test_12.txt AC 349 ms 97408 KiB
11_test_13.txt AC 246 ms 90004 KiB
12_test_00.txt AC 10 ms 14828 KiB
12_test_01.txt AC 55 ms 23648 KiB
13_test_00.txt AC 175 ms 91620 KiB
13_test_01.txt AC 174 ms 91580 KiB
13_test_02.txt AC 1300 ms 156788 KiB
13_test_03.txt AC 1249 ms 134608 KiB