#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <fstream>
#include <math.h>
#include <iomanip>
using namespace std;
#define vt vector
#define INF 0x3f3f3f3f
#define pb push_back
#define FORR1(n) for(int i = 0; i < n; i++)
#define FORR2(i,n) for(int i = 0; i < n; i++)
#define all(u) u.begin(),u.end()
typedef long long ll;
typedef vt<int> vi;
typedef pair<int,int> pii;
struct CTD{
int size;
vi par;
vt<set<int>> tree;
vi sub;
void init(vt<set<int>> &adj){
size = adj.size();
par.resize(size);
tree=adj;
sub.resize(size);
par[0] = -1;
build(0,-1);
}
void build(int u, int p) {
int n = dfs(u, p); // find the size of each subtree
int centroid = find_centroid(u, p, n); // find the centroid
par[centroid] = p;
// for each tree resulting from the removal of the centroid
set<int> ref = tree[centroid];
for (auto v : ref) {
tree[centroid].erase(v); // remove the edge to disconnect
tree[v].erase(centroid); // the component from the tree
build(v, centroid);
}
}
int dfs(int u, int p) {
sub[u] = 1;
for (auto v : tree[u])
if (v != p) sub[u] += dfs(v, u);
return sub[u];
}
int find_centroid(int node, int p, int n){
for(auto& e: tree[node]){
if(e!=p&&sub[e]>n/2){
return find_centroid(e,node,n);
}
}
return node;
}
};
struct fwtree{
int size;
vi arr;
void init(int n){
size = n;
arr.resize(n+2);
for(int i = 0; i < n+2; i++){
arr[i] = 0;
}
}
void update(int i, int x){
for(; i <= size; i+=i&-i){
arr[i]+=x;
}
}
int get(int i){
int ans = 0;
for(; i > 0; i-=i&-i){
ans+=arr[i];
}
return ans;
}
int get(int l, int r){
return get(r)-get(l-1);
}
};
struct point{
long double x, y;
};
bool operator<(point p1, point p2){
return p2.x>p1.x||(p2.x==p1.x&&p2.y>p1.y);
}
struct rect{
int left, right, top, bottom;
};
int grid[1002][1002];
int high[1002][1002];
void solve(){
int n;
cin>>n;
vi arr(n);
FORR1(n){
cin>>arr[i];
}
int ans = 0;
for(int i = 0; i < n; i++){
if(arr[i]==-1)continue;
int curflight = arr[i]-1;
arr[i] = -1;
for(int j = i+1; j < n; j++){
if(arr[j] == curflight){
curflight--;
arr[j] = -1;
}
}
ans++;
}
cout<<ans<<'\n';
}
int main() {
solve();
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
204 KB |
Output is correct |
2 |
Correct |
3 ms |
300 KB |
Output is correct |
3 |
Correct |
6 ms |
320 KB |
Output is correct |
4 |
Correct |
8 ms |
348 KB |
Output is correct |
5 |
Correct |
1190 ms |
7100 KB |
Output is correct |
6 |
Execution timed out |
2081 ms |
7212 KB |
Time limit exceeded |
7 |
Execution timed out |
2089 ms |
5956 KB |
Time limit exceeded |
8 |
Execution timed out |
2078 ms |
5928 KB |
Time limit exceeded |
9 |
Correct |
1650 ms |
6492 KB |
Output is correct |
10 |
Execution timed out |
2033 ms |
6456 KB |
Time limit exceeded |