Submission #1174626

#TimeUsernameProblemLanguageResultExecution timeMemory
1174626guagua0407DEL13 (info1cup18_del13)C++20
0 / 100
0 ms324 KiB
//#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define f first #define s second #define all(x) x.begin(),x.end() #define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } void solve(){ int n,q; cin>>n>>q; vector<int> a(q+2); a[0]=0; a[q+1]=n+1; for(int i=1;i<=q;i++){ cin>>a[i]; } vector<int> b; for(int i=1;i<=q+1;i++){ b.push_back(a[i]-a[i-1]-1); } /*for(auto v:b){ cout<<v<<' '; } cout<<'\n';*/ vector<int> nxt(n+1),prv(n+1); for(int i=0;i<=n;i++){ nxt[i]=i+1; prv[i]=i-1; } auto get=[&](int x,int d){ for(int i=0;i<d;i++){ x=nxt[x]; } return x; }; auto op=[&](int x){ if(x==0 or x==n+1) exit(0); int a=prv[x]; int b=nxt[x]; nxt[a]=b; prv[b]=a; }; auto del=[&](int x){ op(prv[x]); op(nxt[x]); }; vector<pair<int,int>> res; bool used=false; for(int i=0;i<(int)b.size();i++){ if(b[i]==0){ used=false; continue; } while(b[i]>2){ res.push_back({0,a[i]}); b[i]-=2; } if(i+1<(int)b.size() and b[i+1]>=b[i]){ for(int j=0;j<b[i];j++){ res.push_back({1,a[i+1]}); } b[i+1]-=b[i]; used=true; continue; } else{ if(b[i]==2 and used){ res.push_back({0,a[i]}); used=false; continue; } else{ cout<<-1<<'\n'; return; } } } exit(0); sort(all(res)); cout<<(int)res.size()<<'\n'; for(auto v:res){ if(v.f==0){ int x=get(v.s,2); cout<<x<<' '; del(x); } else{ cout<<v.s<<' '; del(v.s); } } cout<<'\n'; return; } int main() {_ int t; cin>>t; while(t--){ solve(); } return 0; } //maybe its multiset not set //yeeorz //diaoborz

Compilation message (stderr)

del13.cpp: In function 'void setIO(std::string)':
del13.cpp:15:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
del13.cpp:16:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...