Submission #711703

#TimeUsernameProblemLanguageResultExecution timeMemory
711703william950615Slagalica (COCI19_slagalica2)C++14
0 / 70
118 ms9932 KiB
#include<bits/stdc++.h> using namespace std; #define F first #define S second #define MEM(x) memset(x, 0, sizeof(x)) #define ALL(x) begin(x), end(x) #define REP(i,n,...) for( int i = 0, ##__VA_ARGS__; i < n; ++i ) #define FOR(i,a,b,...) for( int i = (a), ##__VA_ARGS__; i <=(b); ++i) #define RFOR(i,a,b,...) for( int i = (a), ##__VA_ARGS__; i >=(b); --i) #define EB emplace_back #define EP emplace_back #define mkp make_pair #define SZ(x) int(x.size()) #ifdef DEBUG template<typename T> void _DO(T&&x) {cerr << x<< '\n';} template<typename A, typename ...B> void _DO(A&&a, B&&...b) { cerr <<a << ','; _DO(b...); } #define de(...) do{\ fprintf(stderr, "%s-%d (%s):", __func__, __LINE__, #__VA_ARGS__);\ _DO(__VA_ARGS__);\ }while(0); #else #define de(...) #endif typedef long long ll; typedef pair<int,int> pii; template<typename T> using V = vector<T>; inline void solve() { int N; cin >> N; set< pair<int,int> > st[ 3 ]; // val, jump to set< pair<int,int> > slf[ 3 ]; int stcnt, edcnt; stcnt = edcnt = 0; int ct[ 3 ] = {0, 0, 0}; REP(i,N) { int x, val; cin >> x >> val; de( x, val ); if( x == 1 ) st[1] .insert( mkp( val, 0 ) ), ct[ 0 ]++; if( x == 2 ) st[1] .insert( mkp( val, 1 ) ), slf[ 1 ].insert( mkp( val, 1 )); if( x == 4 ) st[0] .insert( mkp( val, 1 ) ), ct[ 1 ]++; if( x == 3 ) st[0] .insert( mkp( val, 0 ) ), slf[ 0 ].insert( mkp(val, 0 ));; if( x == 5 ) st[2] .insert( mkp( val, 0 ) ); if( x == 6 ) st[2] .insert( mkp( val, 1 )); if( x == 7 ) st[1] .insert( mkp( val, 2 )); if( x == 8 ) st[0].insert( mkp( val, 2)); } V<int> ans; int np = 2; while( !st[ np ].empty() ) { auto p = *st[ np ].begin(); de( "start", np, ans.back(), p.F, p.S ); if( np != p.S && np != 2 ) { if( ct[ p.S ] == 1 && !slf[ np ].empty() ) { auto newp = *slf[ np ].begin(); de("ENDD", newp.F, newp.S ); ans.push_back( newp.F ); st[ np ].erase( newp ); slf[ np ].erase( newp ); continue; } else { ct[ p.S ]--; } } ans.push_back( p.F ); st[ np ].erase( st[ np ].begin() ); if( np == p.S ) slf[ np ].erase( p ); np = p.S; } if( ans.size() != N || ans.back() != 2) { cout << -1 << '\n'; return; } for( auto &i : ans ) { cout << i << ' '; } cout << '\n';; } int main () { int T = 1; #ifdef Local cin >> T; #endif while(T--) solve(); }

Compilation message (stderr)

slagalica.cpp: In function 'void solve()':
slagalica.cpp:89:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   89 |  if( ans.size() != N  || ans.back() != 2) {
      |      ~~~~~~~~~~~^~~~
slagalica.cpp:39:6: warning: variable 'stcnt' set but not used [-Wunused-but-set-variable]
   39 |  int stcnt, edcnt;
      |      ^~~~~
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...