Submission #198085

#TimeUsernameProblemLanguageResultExecution timeMemory
198085model_codeRestore Array (RMI19_restore)C++17
20 / 100
128 ms764 KiB
/** * user: vukelic-2d0 * fname: Mateja * lname: Vukelic * task: restore * score: 20.0 * date: 2019-10-10 06:43:39.802357 */ #include <bits/stdc++.h> #define pb push_back using namespace std; struct upit{ int l,r,k,val; }; vector<upit>v; int n,m; int poj1 = 0; int pojk = 0; int suff[5005]; void check(int x){ for(int i=0; i<=n; i++)suff[i] = 0; vector<int>cif; for(int i=0; i<n; i++){ if((1<<i)&x){ cif.pb(1); suff[n-i-1]++; } else cif.pb(0); suff[n-i-1] += suff[n - i]; } reverse(cif.begin(), cif.end()); for(auto c:v){ int koja; int kolko = suff[c.l] - suff[c.r + 1]; int br0 = c.r - c.l + 1 - kolko; if(c.k <= br0)koja = 0; else koja = 1; if(koja != c.val){ return; } } for(auto p:cif)cout << p << " "; exit(0); } int niz[5005]; void check2(){ for(int i=n-1; i>=0; i--){ if(niz[i] == 1)suff[i]++; suff[i] += suff[i + 1]; } for(auto c:v){ int koja; int kolko = suff[c.l] - suff[c.r + 1]; int br0 = c.r - c.l + 1 - kolko; if(c.k <= br0)koja = 0; else koja = 1; if(koja != c.val){ return; } } for(int i=0; i<n; i++)cout << niz[i] << " "; exit(0); } bool use[5005]; int main() { ios_base::sync_with_stdio(false); cin >> n >> m; for(int i=0; i<m; i++){ int a,b,c,d; cin >> a >> b >> c >> d; v.pb({a,b,c,d}); if(c == 1)poj1++; else if(c == b-a + 1)pojk++; } if(n <= 18){ for(int i=0; i<(1<<n); i++){ check(i); } cout << -1 << endl; return 0; } if(poj1 == m){ for(auto c:v){ if(c.val == 1){ for(int i=c.l; i<=c.r; i++)niz[i] = 1; } } check2(); cout << -1; return 0; } if(poj1 + pojk == m){ } return 0; } /* 4 5 0 1 2 1 0 2 2 0 2 2 1 0 0 1 1 0 1 2 1 0 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...