제출 #338050

#제출 시각아이디문제언어결과실행 시간메모리
338050NimbostratusRestore Array (RMI19_restore)C++17
7 / 100
192 ms492 KiB
#include <bits/stdc++.h> #define mt make_tuple using namespace std; typedef long long ll; const ll INF = 1e15; int N,M; string ans; vector<tuple<int,int,int,int>> q; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("in","r",stdin); //freopen("out","w",stdout); cin >> N >> M; if(N <= 18) { q.resize(M); for(int i=0;i<M;i++) { int l,r,k,v; cin >> l >> r >> k >> v; q[i] = mt(l,r,k,v); } for(int i=0;i<(1<<N);i++) { string cur; for(int k=0;k<N;k++) cur = char('0' + !!(i&(1<<k))) + cur; int pre[cur.size()+5]; pre[0] = (cur[0] - '0'); for(int i=1;i<cur.size();i++) pre[i] = pre[i-1] + (cur[i] - '0'); bool flag = 1; for(int i=0;i<M and flag;i++) { int l,r,k,v; tie(l,r,k,v) = q[i]; //cout << l << " " << r << " " << k << " " << v << endl; int onecnt = pre[r] - (l == 0 ? 0 : pre[l-1]); if(v == 0) flag = flag and ((r-l+1)-onecnt >= k); else flag = flag and ((r-l+1)-onecnt < k); } if(flag) { for(int i=0;i<cur.size();i++) cout << int(cur[i]-'0') << " "; return 0; } } cout << -1 << endl; return 0; } for(int i=0;i<N;i++) ans += '2'; q.resize(M); for(int i=0;i<M;i++) { int l,r,k,v; cin >> l >> r >> k >> v; q[i] = mt(l,r,k,v); } for(int i=0;i<M;i++) { int l,r,k,v; tie(l,r,k,v) = q[i]; if(v == 1) for(int i=l;i<=r;i++) ans[i] = '1'; } for(int i=0;i<M;i++) { int l,r,k,v; tie(l,r,k,v) = q[i]; if(v == 0) { bool flag = 0; for(int i=l;i<=r;i++) { if(ans[i] == '2') { ans[i] = '0'; flag = 1; break; } } if(!flag) { cout << -1 << endl; return 0; } } } for(int i=0;i<N;i++) cout << (ans[i] == '2' ? '1' : ans[i]) << " "; }

컴파일 시 표준 에러 (stderr) 메시지

restore.cpp: In function 'int32_t main()':
restore.cpp:34:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |    for(int i=1;i<cur.size();i++)
      |                ~^~~~~~~~~~~
restore.cpp:50:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     for(int i=0;i<cur.size();i++)
      |                 ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...