Submission #947836

#TimeUsernameProblemLanguageResultExecution timeMemory
947836PM1Watermelon (INOI20_watermelon)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define fr first #define sc second const int mxn=1e5+5; int n,k,a[mxn],ans=0,res[mxn],mx,dis[mxn],sz[mxn]; vector<int>v[mxn],state[mxn],par[mxn]; set<int>s; set<int>tree; bool mark[mxn]; void dfs(int z){ sz[z]=v[z].size(); for(auto i:v[z]){ dfs(i); } if(!v[z].size())s.insert(z); } void solve(int x=1){ if(x==n+1){ ans++; return; } auto y=s.upper_bound(0); while(y!=s.end()){ int z=*y; s.erase(z); for(auto j:par[z]){ sz[j]--; if(!sz[j]) s.insert(j); } solve(x+1); s.insert(z); for(auto j:par[z]){ sz[j]++; s.erase(j); } if(ans==k){ res[z]=x; break; } y=s.upper_bound(z); } } void make(int x,int y){ //cout<<x<<" "<<y<<'\n'; par[y].push_back(x); tree.insert(x); tree.insert(y); v[x].push_back(y); } int main(){ cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i]; if(a[i]==-1){ state[n+1].push_back(i); a[i]=n+1; } else{ state[a[i]].push_back(i); mx=max(mx,a[i]); } } //assert(state[n+1].size()); if (!state[n+1].size() || state[n+1].back()!=n){ cout<<-1; return 0; } for(int i=1;i<state[n+1].size();i++){ make(state[n+1][i-1],state[n+1][i]); } tree.insert(state[n+1][0]); while(mx){ if(state[mx].size()==0){ cout<<-1; return 0; } for(auto i:stete[mx]){ tree.insert(i); } for(auto i:state[mx]){ auto x=tree.upper_bound(i); if(x!=tree.end()){ make(*x,i); } x=tree.lower_bound(i); if(x!=tree.begin()){ x--; if(*x!=a[i]) make(*x,i); } } mx--; } dfs(state[n+1][0]); solve(); if(ans<k){ cout<<-1; } else{ for(int i=1;i<=n;i++){ cout<<res[i]<<" "; } } return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:74:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |  for(int i=1;i<state[n+1].size();i++){
      |              ~^~~~~~~~~~~~~~~~~~
Main.cpp:83:14: error: 'stete' was not declared in this scope; did you mean 'state'?
   83 |   for(auto i:stete[mx]){
      |              ^~~~~
      |              state