# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
900310 |
2024-01-08T05:39:24 Z |
12345678 |
Seats (IOI18_seats) |
C++17 |
|
665 ms |
67404 KB |
#include "seats.h"
#include <bits/stdc++.h>
using namespace std;
const int nx=1e6+5;
int N, v[nx], l[nx];
struct segtree
{
struct node
{
int mn, f, lz;
} d[4*nx];
node merge(node a, node b)
{
if (a.mn==b.mn) a.f+=b.f;
if (a.mn<=b.mn) return a;
else return b;
}
void pushlz(int l, int r, int i)
{
if (l==r) return d[i].mn+=d[i].lz, d[i].lz=0, void();
d[2*i].lz+=d[i].lz;
d[2*i+1].lz+=d[i].lz;
d[i].mn+=d[i].lz;
d[i].lz=0;
}
void build(int l, int r, int i)
{
if (l==r) return void(d[i].f=1);
int md=(l+r)/2;
build(l, md, 2*i);
build(md+1, r, 2*i+1);
d[i]=merge(d[2*i], d[2*i+1]);
}
void update(int l, int r, int i, int ql, int qr, int vl)
{
pushlz(l, r, i);
if (qr<l||r<ql) return;
if (ql<=l&&r<=qr) return d[i].lz=vl, pushlz(l, r, i), void();
int md=(l+r)/2;
update(l, md, 2*i, ql, qr, vl);
update(md+1, r, 2*i+1, ql, qr, vl);
d[i]=merge(d[2*i], d[2*i+1]);
}
} s;
void updateseats(int idx, int mul)
{
if (idx==0||idx==N+1) return;
int c=(v[idx+1]>v[idx])?1:-1;
c+=(v[idx-1]>v[idx])?1:-1;
s.update(1, N, 1, v[idx], N, mul*c);
}
void give_initial_chart(int H, int W, vector<int> R, vector<int> C) {
N=W;
for (int i=1; i<=N; i++) l[i]=C[i-1]+1;
for (int i=1; i<=N; i++) v[l[i]]=i;
v[0]=v[N+1]=1e9;
s.build(1, N, 1);
for (int i=1; i<=N; i++) updateseats(l[i], 1);
}
int swap_seats(int a, int b) {
a++; b++;
set<int> tmp;
for (int i=-1; i<=1; i++) tmp.insert(l[a]+i), tmp.insert(l[b]+i);
for (auto x:tmp) updateseats(x, -1);
swap(v[l[a]], v[l[b]]);
swap(l[a], l[b]);
/*
cout<<"update \n";
for (int i=1; i<=N; i++) cout<<l[i]<<' ';
cout<<'\n';
for (int i=1; i<=N; i++) cout<<v[i]<<' ';
cout<<'\n';*/
for (auto x:tmp) updateseats(x, 1);
return s.d[1].f;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
4 ms |
4440 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
4 ms |
4440 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
166 ms |
20056 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
5 ms |
4696 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
23 ms |
5592 KB |
Output is correct |
2 |
Correct |
46 ms |
6132 KB |
Output is correct |
3 |
Correct |
76 ms |
6096 KB |
Output is correct |
4 |
Correct |
106 ms |
6276 KB |
Output is correct |
5 |
Correct |
140 ms |
8576 KB |
Output is correct |
6 |
Correct |
625 ms |
67404 KB |
Output is correct |
7 |
Correct |
647 ms |
67152 KB |
Output is correct |
8 |
Correct |
590 ms |
67396 KB |
Output is correct |
9 |
Correct |
665 ms |
67348 KB |
Output is correct |
10 |
Correct |
621 ms |
67356 KB |
Output is correct |
11 |
Correct |
605 ms |
67140 KB |
Output is correct |
12 |
Correct |
579 ms |
67352 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
4 ms |
4440 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |