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 |
|
|
| 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 |